prolog, mercury를 좀 찾아봤는데
그냥 prolog는 좀 골때리는 면이 있음.
내가 느낀 문제는, pred(X,Y) 가 있다고 하면
pred(x,y) 처럼 쓰면 pred에 x, y를 인자로 넘겼을 때 진리값을 찾는거고
pred(x,Y) 처럼 쓰면 pred를 만족시키는 Y들을 찾는거거든. (Y가 자유 변수일때)
근데 이게 pred의 구현에 따라서 둘다 가능할 수도 있고 전자만 가능할 수도 있는데, 이걸 구별해주는 문법이 없음.
(그래서 프롤로그는 보통 문서 만들때 어떤식으로 작동하는지 기술해주는듯)
mercury는 변수가 in인지 out인지를 선언해서 올바르지 않은 코드는 거부할 수가 있음. 저번에 다른 갤러가 올린글에서 언급된 것처럼, in/out에 해당하지 않는 경우는 전부 거부해버리는 문제가 있다는 것 같기는 하더라. '현재'라고 표현한걸 보면 개선 의지가 있는듯.
다른 차이로, 머큐리는 타입과 함수가 있는데, prolog에서도 +연산자 같은건 결국 함수라서 걍 머큐리처럼 함수를 정의할 수 있는게 좋은것 같음.
머큐리 타입 시스템은 하스켈하고 거의 같은데, 하스켈 Typeable에 해당하는걸 그냥 줘버림 (그래서 RTTI도 있음). 개인적으로 불호인 부분.
대신 uniqueness type도 있는데, 이건 나쁘지 않을듯.
뭐 하스켈 안해본 사람이면 모르겠는데, 하스켈 해본 사람이면 프롤롤로그 제끼고 바로 머큐리 해도 될것 같음.
대충
FP = Lisp | Haskell
LP = Prolog | Mercury
map :: FP -> LP
map Lisp = Prolog
map Haskell = Mercury
이런 느낌임 ㅇㅅㅇ
역사적인 포지션으로 보나, 언어 철학으로 보나 이런 관계라고 생각됨.
+
또 프롤롤로그 ㅈ같은게, 선언 조무사임.
p(X,Y), q(X,Y) 랑 q(X,Y), p(X,Y) 의 결과가 다를 수 있고, 심지어
p(X,Y)랑 p(X,Z), Z=Y 도 다를 수가 있음.
머큐리도 이런지는 아직 잘 모르겠음.
그냥 prolog는 좀 골때리는 면이 있음.
내가 느낀 문제는, pred(X,Y) 가 있다고 하면
pred(x,y) 처럼 쓰면 pred에 x, y를 인자로 넘겼을 때 진리값을 찾는거고
pred(x,Y) 처럼 쓰면 pred를 만족시키는 Y들을 찾는거거든. (Y가 자유 변수일때)
근데 이게 pred의 구현에 따라서 둘다 가능할 수도 있고 전자만 가능할 수도 있는데, 이걸 구별해주는 문법이 없음.
(그래서 프롤로그는 보통 문서 만들때 어떤식으로 작동하는지 기술해주는듯)
mercury는 변수가 in인지 out인지를 선언해서 올바르지 않은 코드는 거부할 수가 있음. 저번에 다른 갤러가 올린글에서 언급된 것처럼, in/out에 해당하지 않는 경우는 전부 거부해버리는 문제가 있다는 것 같기는 하더라. '현재'라고 표현한걸 보면 개선 의지가 있는듯.
다른 차이로, 머큐리는 타입과 함수가 있는데, prolog에서도 +연산자 같은건 결국 함수라서 걍 머큐리처럼 함수를 정의할 수 있는게 좋은것 같음.
머큐리 타입 시스템은 하스켈하고 거의 같은데, 하스켈 Typeable에 해당하는걸 그냥 줘버림 (그래서 RTTI도 있음). 개인적으로 불호인 부분.
대신 uniqueness type도 있는데, 이건 나쁘지 않을듯.
뭐 하스켈 안해본 사람이면 모르겠는데, 하스켈 해본 사람이면 프롤롤로그 제끼고 바로 머큐리 해도 될것 같음.
대충
FP = Lisp | Haskell
LP = Prolog | Mercury
map :: FP -> LP
map Lisp = Prolog
map Haskell = Mercury
이런 느낌임 ㅇㅅㅇ
역사적인 포지션으로 보나, 언어 철학으로 보나 이런 관계라고 생각됨.
+
또 프롤롤로그 ㅈ같은게, 선언 조무사임.
p(X,Y), q(X,Y) 랑 q(X,Y), p(X,Y) 의 결과가 다를 수 있고, 심지어
p(X,Y)랑 p(X,Z), Z=Y 도 다를 수가 있음.
머큐리도 이런지는 아직 잘 모르겠음.
프롤로그 익히기 개좆같던데 뭐보고 하냐
나도 프롤롤로그는 못하겠더라. 대충 위키보다가 머큐리 문서 보는중.
이런 거 개인 블로그에도 써 디시에 두긴 아까운 글을 많이 쓰네
디시 일기장으로 쓰지 말라는 거구나. 미안해 ;ㅅ;
그런 뜻은 아닌데, 개인 블로그에'도' 쓰란거임
깃헙 블로그 만들고픈데 귀찮아서 안하고 있음 ㅋㅋ
이미 알 수도 있는데 heckle 이란 것도 있음
http://hackage.haskell.org/package/heckle
저건 몰랐는데, hakyll도 있고 유사품 많은듯
근데 깃헙 호스팅이 jekyll 밖에 안되지 않나
깃허브 호스팅은 username.github.io 로 퍼블리싱 하면 뭐로 하든 다 됨
개인적인 생각으론 한 십년에서 십오년후 js에 논리형 개념이 도입될거 같음.