simple PL written in go
명령문은 값을 뿌리지 않는반면 표현식은 값을 뿌립니다.
let a = fn(x) { x + 5 }; 은 명령문입니다.
a(10); 은 표현식입니다.
monkey언어에서 let 문과 return 문을 제외하면 모두 표현식입니다.
-5;
!true;
5 + 5;
5 - 5;
5 / 5;
5 * 5;
5 * (5 + 5)((5 + 5) * 5) * 5;
add(2, 3);
add(add(2, 3), add(5, 10));
max(5, add(5, 5 * 5));
(foo * bar) / foobar;
add(foo, bar);
함수는 일급 시민입니다. 따라서 함수 리터럴 역시 표현식입니다.
Monkey 언어에는 if 표현식이 이라는 특이한 문법이 있습니다.
let result = if (10 > 5) { true } else { false };
result // => true