このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1286706874/390
#  Haskellで、対話的なプログラムってどんな感じになりますか? 
#  手続き的に書くと 
#   
#  1. 入力を促すメッセージを表示 
#  2. キーボードから文字列を入力 
#  3. 特定の文字列or文字列終端が入力されると終了 
#  4. 入力された文字列に関数を適用 
#  5. 適用した結果を表示 
#  6. 最初に戻ってループ 
#   
#  な感じのプログラムなんですが… 
# 

'Prologで、対話的なプログラム' :-
        入力を促すメッセージを表示,
        キーボードから文字列を入力(_入力文字列),
        キーボードから文字列を入力(_入力文字列,_入力文字列ならび),
        concat_atom(_入力文字列ならび,'\n',_対象文字列),
        負節実行(_対象文字列,_項),
        適用した結果を表示(_項).
'Prologで、対話的なプログラム' :- 'Prologで、対話的なプログラム'.

キーボードから文字列を入力(_入力文字列,[]) :-
        特定の文字列or文字列終端が入力されると終了(_入力文字列),!.
キーボードから文字列を入力(_入力文字列,[_入力文字列|R]) :-
        入力を促すメッセージを表示,
        キーボードから文字列を入力(_入力文字列の二),
        キーボードから文字列を入力(_入力文字列の二,R).

入力を促すメッセージを表示 :-
        入力を促すメッセージ(_入力を促すメッセージ),
        write('入力を促すメッセージ').

キーボードから文字列を入力(_入力文字列) :-
        get_line(_入力文字列).

特定の文字列or文字列終端が入力されると終了(end_of_file).

負節実行(_対象文字列,_項) :-
        atom_to_term(_対象文字列,_項,_),
        call(_項).

適用した結果を表示(_項) :-
        write_formatted('%q\n',[_項]).