Overlay GHC

素材突っ込み




計算機

doi (2007-05-12 (土) 14:58:08)

http://www2.media-art-online.org/~ks91/rg-p2p-workshop2007s/calc.ghc

:-main.
main :- calc(Xs), io:instream(Xs).

calc(Xs) :- true
	| Xs = [write('式を入れてちょ: '), read(X), write(X), nl|Xs1], calc0(X, Xs1).

calc0(X, Xs) :- Y := X | Xs = [write('= '), write(Y), nl|Xs1], calc(Xs1).
calc0(quit, Xs) :- true | Xs = [write('やめるっちゃ。'), nl].
calc0(X, Xs) :- otherwise | Xs = [write('ちゃうちゃう、')|Xs1], calc(Xs1).

例題(リスト: 以下のFIXMEを補完して、奇数のみを選択する)

doi (2007-05-12 (土) 14:53:53)

main(I) :- only_odd(I, O), output(O, Os)@this_node, io:outstream(Os).

output([X|Xs], Os) :- true | Os = [write(X), nl|Os1], output(Xs, Os1).
output([], Os) :- true | Os = [].

only_odd(FIXME, Os) :- N mod 2 =:= 0 | only_odd(Ns, Os).
only_odd(FIXME, Os) :- N mod 2 =\= 0 | Os = FIXME, only_odd(Ns, Os1).
only_odd(FIXME, Os) :- true | Os = [].

GHC参考資料!

doi (2007-05-12 (土) 14:37:06)


[wija FAQ]: javaで日本語文字が化ける

doi (2007-05-12 (土) 14:11:09)

$JAVA_HOME/jre/lib/fonts/fallback というディレクトリを作って、そこにTrueType?フォントをコピーするといいかも。


[wija FAQ]: iTunesが立ち上がるのですが

doi (2007-05-12 (土) 14:05:53)

仕様です。もし気になる場合は、tunesプラグインの連携を切ってください。


素数生成プログラム

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=[].

関係するlink

doi (2007-05-12 (土) 13:57:31)


lib-ioの中身を大公開! (as source code example?)

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.


サンプルプログラム

  • fileave.ghc 一つのストリームでの加重平均を出す
  • filecompact.ghc 一つのストリームから重複する数字を削除する
  • filefibo.ghc フィボナッチ数を求める
  • filemerge.ghc 二つのストリームを一つのストリームにまとめる
  • fileprime.ghc 素数を求める

添付ファイル: filemerge.ghc 1758件 [詳細] fileprime.ghc 1785件 [詳細] filefibo.ghc 1740件 [詳細] filecompact.ghc 1750件 [詳細] filecalc.ghc 834件 [詳細] fileave.ghc 1716件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-05-12 (土) 14:58:40 (3845d)