doi (2007-05-12 (土) 14:03:01)
http://www2.media-art-online.org/%7Eks91/primes.ghc より
:-main(100). main(Max) :- primes(Max, Ps), output(Ps, Os), io:outstream(Os). output([P|Ps], Os) :- true | Os = [write(P), nl|Os1], output(Ps, Os1). output([] , Os) :- true | Os = []. primes(Max,Ps) :- true | gen(2,Max,Ns), sift(Ns,Ps). gen(N,Max,Ns) :- N=<Max | Ns=[N|Ns1], N1:=N+1, gen(N1,Max,Ns1). gen(N,Max,Ns) :- N> Max | Ns=[]. sift([P|Xs],Zs) :- true | Zs=[P|Zs1], filter(P,Xs,Ys), sift(Ys,Zs1). sift([], Zs) :- true | Zs=[]. filter(P,[X|Xs],Ys) :- X mod P=:=0 | filter(P,Xs,Ys). filter(P,[X|Xs],Ys) :- X mod P=\=0 | Ys=[X|Ys1], filter(P,Xs,Ys1). filter(P,[], Ys) :- true | Ys=[].
doi (2007-05-12 (土) 13:57:31)
doi (2007-05-12 (土) 13:43:05)
% $Id: //depot/scm/main/java/org/media_art_online/ghc/lib/lib-io.ghc#3 $
% $DateTime?: 2007/04/19 05:15:52 $
:- module io.
outstream([write(X)|Os]) :- write(X) | outstream(Os).
outstream([print(X)|Os]) :- write(X) | outstream(Os).
outstream([nl|Os]) :- nl | outstream(Os).
outstream([]) :- true.
instream([write(X)|Is]) :- write(X) | instream(Is).
instream([print(X)|Is]) :- write(X) | instream(Is).
instream([nl|Is]) :- nl | instream(Is).
instream([read(X)|Is]) :- read(X1) | X = X1, instream(Is).
instream([]) :- true.