하스켈 재미있는데요?
2013.09.27 00:48
저는 일단 코더는 아니고요. 일전에 쓴 적이 있지만 논리학이 전공입니다.
그런데 학부 수준에서 쉽고 재미있게 논리학을 가르쳐볼 수 없을까 ... 하다가 요런 책을 발견했네요: www.amazon.com/Haskell-Programming-Second-Edition-Computing/dp/0954300696
함수형 언어로 코딩을 하면서 집합론과 논리학을 배운다는 아이디어도 참신하고,
공부를 하다 보니까 하스켈이란 언어가 참 탄탄하다는 느낌이 듭니다.무슨 수학 문제를 풀 때 재귀적으로 정의를 하다보면 점화식이란 거에 부딪히기 마련이죠. 그런데 하스켈로는 이런 식을 표현하기가 쉽고, 특히 점화식을 단순화하면 곧 코드를 최적화해 버린 것이 되는 게 재미있네요.
리스트를 셋처럼 표기하는 것도 가능하고 말이죠. 다만 좀 불편한 건 리스트를 만들 때 서로 다른 타입의 대상을 엘레먼트로 할 수 없다는 거.코드를 쓰고 났을 때 가독성도 매우 좋아요.
코딩해 보는 건 학부 때 호기심에 컴퓨터 학원 두 달 다니다가 때려친 후로 십년도 더 된 듯하네요. 개인적으로 우리 나라 컴퓨터 학원 강사들은 참 못 가르치는 듯. (읽으시는 분 가운데 강사하시는 분께는 죄송합니다 ㅎㅎ.)
그런데 정확하게 언제 지연평가가 되는 건지 약간 이해가 어렵네요. 어차피 90퍼센트는 취미로 들여다 보고 있으니까....
코멘트 7
-
해색주
09.27 01:07
잠깜 해보신 것으로 쉽게 이해하시다니 천재이십니다. ^^ 저는 좋아는 하는데 참 못해서요. 재능이 없나 생각중입니다. -
왕초보
09.27 02:43
고전인 prolog나 lisp도 좋아하실듯. 진짜 고전으로 가면, APL이나 FORTH까지도.. ( '')
-
김군
09.27 09:46
이런 비주류 아카데믹 기믹 랭귀지 같은 것들 너무 좋아해요 ^_^
-
김군
09.27 08:40
퀵소트 코드가 딱 세 줄이면 되네요:quickSort::[Integer]->[Integer]quickSort [] = []quickSort (x:xs) = (quickSort [a|a<-xs,a<x])++[x]++(quickSort [b|b<-xs,b>=x])위 코드는 책에 나온 거고, 제가 첫날 짰던 건 이거:quicksort :: [Int]->[Int]classify :: Int->[Int]->([Int],[Int])classify _ [] = ([],[])classify x (y:ys) | y<x = ( (y:fst zp), snd zp )| otherwise = ( fst zp, (y:snd zp) ) where zp = classify x ysquicksort [] = []quicksort (x:xs) = (quicksort (fst yp))++(x:quicksort (snd yp)) where yp = classify x xs근데 책에 코드가 훨씬 짧을 뿐더러 아름답고 직관적. 역시 컴퓨터를 공부 안 한 건 잘한 선택이었나봅니다. ( '') -
유령상어
09.27 10:46
소위 말하는 OOP 프로그래머들은 함수형 이해하기가 쉽지는 않더군요.
다만 개념만 잘 잡히면 그 다음은 얼마나 똑똑하냐.. 혹은 수학 잘하느냐의 문제라고도 하더군요.
저는 다만 lisp을 좀 경험해서 그런지 상대적으로 쉽게 하긴 했죠.
제가 공부했던 책은 아래 책인데요, 저도 오랫만에 한번 찾아봐야겠네요.ㅎ
-
왕초보
09.28 01:25
저는 비주류도 아니고 이 바닥에 살지 않지요. ㅎㅎ 지금도 OOP프로그램소스의 대부분은 OOP의 장점을 전혀 사용하지 않고 있다고 해요. 인류가 그 장점을 제대로 사용하려면 뇌 구조가 바뀌어야 할지도. 최소한 지금 학교교육은 완전히 뒤집어 엎어야 할 것으로 보입니다.
-
뭐 OOP는 라이브러리 배포할때 가독성 좋으라고 있는거죠... :(