[완료]하스켈 Lammda 함수에 대해 공부중인데 이해가 가지 않는 부분이 있습니다..

jenkince의 이미지

람다함수에 대해서 공부중입니다.

책의 앞부분부터 차근차근 공부중이구요. 웬만한 것은 대부분 이해가 가더군요.

그런데 논리연산과 조건문에 대해서 도저히 책을 뚫어져라 쳐다봐도 이해가 가지 않습니다.

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 라고 나와있는데

이것을 아무리 조합시켜도 저 결론에 도달하지 못하겠습니다.

이 논리연산과 조건문은 람다 함수의 기본 계산 과정과 다른겁니까? 아니면

제가 혹시나 잘못 이해하고 있는 부분이 있는가요?

있다면 부디 알려주시길..

익명 사용자의 이미지

And가 틀린것 같습니다.
And = \xy.x y False
이렇게 돼야할 것 같은데요...

jenkince의 이미지

과정을 계산식으로 써내려갈때 xy.x y False 를 문자 그대로 계산식에 넣어서 계산해야하는건가요?
아니면 xy.x y False 에서 False 도 다르게 고쳐야 하는건가여?

익명 사용자의 이미지

어느 방식이든 상관없습니만 False를 굳이 \xy.y로 치환해서 계산하면 계산과정만 번거로워질듯 합니다. 물론 어떤 계산식에서 (False a b)와 같은 식이 나온다면 False를 원래 정의인 \xy.y로 치환해서 계산을 이어가야겠지만요.

나그네나그네의 이미지

람다 캘큘러스에서 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 값을 반환'이 됩니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.