ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • FWAE의 평가(Evaluation) 과정 이해하기: 일급 함수와 오류 처리
    컴공지식/프로그래밍언어론 2024. 10. 5. 17:08

    FWAE는 기본적인 수학 연산뿐만 아니라, 일급 함수를 지원하는 언어이다.

    일급 함수는 함수가 값으로 취급된다는 것을 말한다.

     

    숫자나 함수는 평가 결과가 될 수 있으며, 함수 정의와 호출, 변수 바인딩을 통해 복잡한 계산을 수행할 수 있다.

    또한, 정의되지 않은 식별자나 잘못된 연산을 시도할 때 오류가 발생한다.

     

    FWAE에서 숫자나 기본적인 연산식은 쉽게 평가될 수 있다.

    숫자 10은 그 자체로 평가되며, 결과는 그대로 10이다.

    덧셈과 뺄셈 같은 기본 연산도 쉽게 평가된다. {+ 1 2}는 1과 2를 더한 값 3이 된다.

     

    with 구문을 사용하면 변수를 선언하고 그 값을 특정 연산에 사용할 수 있다.

    {with {x 7} {+ x 2}}  =>  {+ 7 2}  =>  9

    위 코드에서 x에 7을 바인딩하고, 그 값을 이용해 x + 2를 계산한 결과가 9가 된다. 이처럼 with는 일시적으로 변수를 선언하고 그 변수를 사용하는데 매우 유용하다.

    정의되지 않은 변수를 사용하면 free identifier 오류가 발생한다.

     

    FWAE에서 함수는 값처럼 다룰 수 있다. 함수 자체가 결과가 될 수 있으며, 함수 정의는 다음과 같은 형태로 작성된다.

    {fun {x} {+ 1 x}}  =>  {fun {x} {+ 1 x}}

    위 코드는 x라는 인자를 받아서 1을 더하는 함수이다. 함수 정의는 특별한 연산 없이 그대로 반환된다.

    이제 이 함수를 호출해 보자

    {with {f {fun {x} {+ 1 x}}} {f 3}}  
    =>  {{fun {x} {+ 1 x}} 3}  
    =>  {+ 1 3}  
    =>  4

    f(3)을 호출하면, x에 3이 대입되고 1 + 3 = 4라는 결과를 얻게 된다.

     

     

     

    '컴공지식 > 프로그래밍언어론' 카테고리의 다른 글

    람다 표현식이란?  (0) 2024.10.12
    First-class function  (0) 2024.10.12
    Substitution의 연기  (1) 2024.10.05
    함수 정의하기  (0) 2024.09.28
    Substitution(치환)에 관하여  (1) 2024.09.22
Designed by Tistory.