ソフトウェア科学会では、珍しく Prolog の発表を見ました。ポスターセッションだったけど。いや、普通の発表でも「実装は Prolog 」ってのがあったな。そういえば、IC の投稿にも Prolog 使ったものがあった。しぶとく生き残っているな〜
SFCの人がやっている、無名述語とか言うもので、
?-call([X,X],V,1).
V=1
yes
とかなるものらしい。わかる人には、これで全部らしいです。call しないと意味ないのだが、実装を見てわかりました。
maplist(binary_term(=), [1,2], [3,4], G),
みたいなのを多用している。これは、
binary_term(=,1,3,G1),binary_term(=,2,4,G2),G=[G1,G2],
みたいに動いてくれるわけらしい。このために述語をたくさん書くのもあれなので、導入されたものみたい。
maplistは、
maplist(G,L0,L1,L2) :- maplist_(L0,L1,L2,G).
maplist_([],_,_,_) .
maplist_([H0|T0],[H1|T1],[H2|T2],G) :-
call(G,H0,H1,H2),
maplist(T0,T1,T2,G).
とか簡単なんですが、SWI-Prolog では標準装備らしいです。
で、SICStus Prolog で動かすには、このあたり全部書かないといけないらしい。gensym がないとかは、昔から慣れているので問題ないんですが、結構、書くはめに。
簡単な例題は動いたけど、まだ、動いてない部分があるみたい。ま、良いか。Prolog 忘れないための練習みたいなものなので。
でも、この研究って、80年代なら理解できるんだけど、いまやることかな? まぁ、面白いなら良いか。
No comments:
Post a Comment