-
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}
=> 4f(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