[완료]하스켈 Lammda 함수에 대해 공부중인데 이해가 가지 않는 부분이 있습니다..
글쓴이: jenkince / 작성시간: 목, 2012/04/05 - 9:49오후
람다함수에 대해서 공부중입니다.
책의 앞부분부터 차근차근 공부중이구요. 웬만한 것은 대부분 이해가 가더군요.
그런데 논리연산과 조건문에 대해서 도저히 책을 뚫어져라 쳐다봐도 이해가 가지 않습니다.
ex) And True Fals = False
ex) or True False = True
ex) IF(not False) AB = A
라고 책에 나와있는데 And = λxy.xy / True = λxy.x / False = λxy.y / or = λxy.x True y / IF = λxyz.xyz 라고 나와있는데
이것을 아무리 조합시켜도 저 결론에 도달하지 못하겠습니다.
이 논리연산과 조건문은 람다 함수의 기본 계산 과정과 다른겁니까? 아니면
제가 혹시나 잘못 이해하고 있는 부분이 있는가요?
있다면 부디 알려주시길..
Forums:
And가 틀린것 같습니다. And = \xy.x y
And가 틀린것 같습니다.
And = \xy.x y False
이렇게 돼야할 것 같은데요...
그걸 잘 이해를 못하겠네요...
과정을 계산식으로 써내려갈때 xy.x y False 를 문자 그대로 계산식에 넣어서 계산해야하는건가요?
아니면 xy.x y False 에서 False 도 다르게 고쳐야 하는건가여?
어느 방식이든 상관없습니만 False를 굳이
어느 방식이든 상관없습니만 False를 굳이 \xy.y로 치환해서 계산하면 계산과정만 번거로워질듯 합니다. 물론 어떤 계산식에서 (False a b)와 같은 식이 나온다면 False를 원래 정의인 \xy.y로 치환해서 계산을 이어가야겠지만요.
lambda
람다 캘큘러스에서 Boolean 값의 특징은, Bolean 값이 함수로 정의 될 수 있는데 무슨 함수냐면 바로 if 문과 동일한 기능을 할 수 있는 함수로 정의가 된다는 것입니다.
이제
True = lx. ly. x
False = lx. ly. y
로 정의를 할 시,
True A B
는 항상 A만을 계산하고
False A B
는 항상 B만을 계산합니다.
이제 And 함수를 정의할 수 있습니다. And 함수는 2개의 a, b 인자를 받을 수 있습니다.
a, b가 Boolean 이라 할 때
And a b = a b False
로 정의를 하면, '만약 a일 경우 b를 계산, 아니면 False 값을 반환'
와 같은 의미를 가지게 됩니다.
같은 원리로, Or a b 함수를 정의 하자면,
Or a b = a True b
'만약 a일 경우 True, 아니면 b 값을 반환'이 됩니다.
댓글 달기