#noindex WtEn:lambda_expression Sub: closed_lambda_expression = [[combinator]] "자유 변수 free_variable 가 없는 표현식을 닫혀 있다(closed)라고 하며, 닫힌 람다 표현식(Closed lambda expression)을 컴비네이터(combinator)라고 한다."[* https://www.sangkon.com/haskell-study-part02/] ---- MKLINK [[식,expression]] lambda_calculus 람다계산/람다계산법/[[VG:람다대수,lambda_calculus]] { 이것은 Turing_machine과 똑같은 표현력을 가지고 있다. } ---- 람다식 계산의 예 다시쓰기: 람다식 중에 (λx.E)E' 이 있으면 λx를 떼어내고 E 안에 있는 x가 E'로 바뀐다. 예: (λx.(λy.xy))z 오른쪽에 z가 있으므로, λx를 떼어내면서 λy.xy 안의 x가 z로 바뀐다. λy.zy 람다식 λx.E 는 함수로 볼 수 있고 * x는 함수의 인자,,parameter/argument,, 이름 // [[파라미터,parameter]]/[[아규먼트,argument]] * E는 함수의 내용 [[다시쓰기,rewriting]]는 함수가 인자를 받아서 함수의 내용을 실행하는 것으로 볼 수 있다. 중학교 때 함수를 표기하는 방식과 비교하면, [[제곱,square]] 연산은 $f(x)=x^2$ 을 $\lambda x.x^2$ 으로 적는 셈이다. 자연수 k는 다음과 같은 람다식 __k__로 표현한다. 자연수 구성 __0__=λs.(λz.z) __1__=λs.(λz.sz) __2__=λs.(λz.s(sz)) __3__=λs.(λz.s(s(sz))) i.e. $\underline{3}=\lambda s.(\lambda z.\underbrace{s(s(s}_{3}z)))$ = tmp = SNU이광근 ''밑줄이 뭔지 설명이 제대로 안 돼 있어서 불편... 개정판에는 나와있으려나?'' [[다시쓰기,rewriting]] = 실행하기([[실행,execution]]) 덧셈 구성 곱셈 구성 (생략) [[참,true]] __T__ = λx.(λy.x) [[거짓,false]] __F__ = λx.(λy.y) AND연산자 __and__ a b = a b __F__ 0인가? __zero?__ n = n(λx.__F__)__T__ (SNU이광근) Up: [[식,expression]]