洪民憙 (홍민희) 블로그

이하의 글은 2010년에 쓴 것입니다. 오래된 글인 만큼, 현재의 생각과 전혀 다른 내용도 많이 포함되어 있고, 당시와는 상황이 많이 달라진 점도 있습니다. 또한, 그 당시에 잘못 알려졌던 정보도 포함되어 있을 수 있습니다. 어찌됐든 저는 제 오래된 글이 회자되는 것을 저어합니다. 읽기에 앞서 양해를 부탁드립니다.

Fexpr

Fexpr이란 (Lisp에서) 적용될 때 인자들을 모두 평가한 결과 값을 전달받는 대신, 인자에 나열된 폼들(forms)을 그대로 전달받는 함수를 말한다.1 따라서 인자는 아무 것도 평가되지 않을 수도 있고, 평가 순서가 달라질 수도 있다. 함수 안쪽에서 폼을 가지고 명시적으로 평가(eval 함수를 이용해서)해야 하므로 Haskell 등에서 사용하는 normal order evaluation과도 다른 이야기다.

Lisp은 아니지만 Io나 내가 만드려는 언어인 Veeyu도 fexpr 기능을 갖고 있다.


  1. 그야 물론 Lisp의 모든 폼이 사실은 리스트(list) 아니면 애텀(atom)이라는 homoiconicity 덕분에 가능한 이야기다.