본문 바로가기

23년 1학기 학교공부/프로그래밍언어개론

[OCaml] 구문(Statement)와 표현식(Expression)

목차

    728x90
    반응형
    SMALL

    📁 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이 존재한다.

     

     

    728x90
    반응형
    LIST