2012년 10월 30일 화요일

Smullyan #4, To Mock a Mockingbird

To Mock a Mockingbird
Raymond Smullyan
이 책은 논리 퍼즐을 다룬 전반부와 combinatory logic을 다룬 후반부로 나뉘어져있다. 전반부는 퍼즐책이라 해도 좋지만, 후반부는 퍼즐의 탈을 쓴 수학책이다. 전반부 논리 퍼즐부분은 스멀리언씨의 후반부 저작물답게 적절한 난이도 - 반 정도는 풀 수 있는 난이도 - 를 가지고 있다.

후반부의 combinatory logic에선 먼저 combinator들을 소개한다. 콤비네이터는 쉽게 말하면 함수(function)이다. 하지만 함수가 다른 함수에 대입될 수 있고, 함수의 결과값으로 함수가 나올 수 있기 때문에 (higher order function이라고 한다) 함수의 입력값과 결과값이 보통 숫자라고 알고 있던 나의 머리속을 헷갈리게 하기 시작한다. 소개된 여러 combinator들은 서로 조합되어 여러 가지를 만들어낼 수 있는데, Church (수학자 이름이다)의 number를 표현할 수 있으며, lambda calculus에 대응되어 현대 프로그래밍과 동등한 계산 능력을 발휘할 수 있다. 스멀리언씨가 좋아하는 괴델의 불완전성 정리를 combinator를 이용하여 이야기한다.

스멀리언씨의 이야기꾼 재능과, combinatory logic 자체의 재미가 조합되어 후반부는 그리 복잡하지는 않았다. 단지 난 퍼즐책을 보면서 퍼즐을 풀고 싶었는데 이 책에서는 수학 문제를 푼 셈이 되어버려서, 굳이 말하지면 그 점이 아쉬웠다고나 할까.

combinatory logic의 기본인 higher order function은 점점 각광받고 있는 함수형 프로그래밍 언어의 특징이다. combinator들을 이용하여 문제를, 실제 프로그램을 보다 쉽고 재미있게 풀 수 있을까? 궁금해지고 있다.

This book might be most well-known puzzle book of Raymond Smullyan in Computer Science society, for it deals with combinatory logic which is equivalent to lambda calculus and in turns lambda calculus is equivalent to modern computer programming languages. During my study of Haskell programming language at spring 2009, I came across with that information and bought this book right then. At that time, I read some former parts, and there are normal logic puzzle, like truth-telling Knights and lying Knaves, and put it down without serious reading combinatory logic parts.

I'm solving some puzzles daily before sleep this year and I finally take a trip to Smullyan's forest full of combinatory birds. The latter part of this book deals with combinatory logic. This is a puzzle book, but combinatory logic is definetly math, no matter what the author calls combinators as birds. So this is a math book. But I enjoyed this book. Combinatory logic might be one of few math topic which is not boring but interesing. I was very glad to find out variety of combinators, the relationship between combinatory logic and lambda calculus. "introduction to combinator logic and lambda calclus" should be the subtitle of this book.

Can combinatory logic be practical? It might be.

So.. I ordered a book named "Lambda calculus and combinators: introduction".



댓글 없음: