과연 first class citizen이란 무엇일까?
함수형 언어를 공부하면서 first class citizen에 대한 궁금증이 생겼다.
그래서 영문 위키를 검색해 보았다.
결론적으로 first class citizen은 기본 연산을 모두 적용할수 있는 객체를 말한다.
여기에서 객체란 class, function, method, datatype ... etc이다.
보통 가장 처음 접하는 c언어로 예를 들어 보자.
ex) int char float과 같은 기본 데이터 타입을 first class citizen으로 기본 연산을 모두 수행이 가능 하다. 하지만 c언어에서는 function은 대입연산 등이 불가능하다. 따라서
-----------------------------------------------
c언어에서의 first class citizen
-----------------------------------------------
datatype O
-----------------------------------------------
function X
-----------------------------------------------
ex) 반면에 함수형언어는 function이 first class citizen이다. 따라서
변수에 함수를 대입하는 것이 가능하다.
간단히 설명해서 함수형 언어에서는
var a = {} ; // 함수형 언어에서는 가능
var b = {} ; // 함수형 언어가 아닌 경우 불가능
앞서서 함수형 언어를 공부하면서 이것 저것 찾아본 것 중에는 함수형언어에 대한 요구 사항들이 있다. 클로저, higher-order , non local variable , nested function등이 있지만 이것을 모든 함수형 언어가 포함하지는 않는다.
댓글
댓글 쓰기