컴공지식/프로그래밍언어론

Bound and Free Identifiers (바운드/자유 식별자)

개강한 공대생 2024. 9. 11. 15:30

식별자(Identifier)에 대해 더 깊이 들어가 보자.

식별자에는 바운드 식별자(Bound Identifier) 와 자유 식별자(Free Identifier) 라는 개념이 있다.

 

바운드 식별자는 프로그램 내에서 값이 바인딩된(할당된) 식별자다.

즉, 어떤 값에 연결된 변수라고 보면 된다.

예를 들어, with 구문에서 변수가 값을 할당받으면 그 변수는 바운드 식별자가 된다.

with {x {+ 1 2}} {+ x x}

여기서 xwith 구문에서 {+ 1 2} 로 정의되고, 이는 3으로 계산된다. 이제 x3이라는 값에 바운드된 식별자가 된 거다.

이후 x3으로 해석돼서, x + x3 + 3으로 계산된다.

 

자유 식별자는 프로그램 내에서 정의되지 않은(바인딩되지 않은) 식별자를 의미한다.

자유 식별자는 프로그램에서 참조하려고 해도 그 값을 찾을 수 없기 때문에, 에러가 발생할 수 있다.

with {x {+ 1 2}} {+ x y}

여기서 x는 정의됐지만, y는 정의되지 않았다.

y는 어디서도 값을 할당받지 않았기 때문에 자유 식별자다.

이 경우 프로그램은 y가 뭔지 몰라서 에러가 발생한다.