목차
📁 Statement와 Expression
프로그래밍언어에서 statement와 expression은 서로 다른 용도이다.
📌 Statement
실행 시 프로그램의 상태전이를 수행하는 언어의 구성 요소이다.
상태전이란 메모리 상태를 변경하는 행위를 뜻하는데, 그렇기 때문에 값을 반환하지 않는다.
int x = 3;
위 코드는 비어있는 메모리에 3이 들어갈 뿐 어떠한 값을 반환하지 않기 때문에 statement이다.
📌 Expression
실행 시 값으로 계산되는 언어의 구성요소이다.
상태전이를 수행하지 않고, 항상 실행 결과로 "값"을 도출한다
int x = 1 + 2;
위 코드에서 우항의 1, 2, 1+2 각각 1, 2, 3이라는 값을 반환하기 때문에 expression이다.
🔎 언어에 따른 statement와 expression
언어에 따라 statement와 expression이 명확하게 분리되지 않는 경우도 존재한다.
C++의 경우에는 표현식을 구문으로 사용하는 Expression statement가 있고, GNU C에는 구문을 표현식으로 사용하는 Statement Exprs가 있다. 이처럼 Statement와 Expression을 서로 변환하기도 한다.
Function call expressions처럼 상태전이를 야기하는 Expression이 있기도 한다.
📁 순수 함수형 언어(pure functional language)
순수 함수형 언어는 오직 expression으로만 구성된다.
상태 전이를 수행하는 statement는 존재하지 않고, 모든 expression의 실행 전후 메모리상태가 동일하므로 Side-effect가 없는 불변성의 특징을 지닌다.
하지만 때때로 Side-effect가 유용할 때가 있기 때문에, OCaml은 이를 활용함.
OCaml은 pure functional language가 아니므로, 매우 제한된 형태로 메모리 상태를 변경하는 expression이 존재한다.