このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1258158172/688
#  [1] 授業単元: 
#  アルゴリズムとプログラミング 
#  [2] 問題文(含コード&リンク): 
#  http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10234.txt
#
# リストを用いたスタックの基本操作
# 
# リストsを用いてスタックの基本操作を行うプログラムを実現したい。
# 図のプログラムを完成させよ。
# ただし下記の条件を守れ。
# 
# 1: data.datからgetc()を用いてアルファベットを一文字ずつ読み込み、
スタックsにpush-downする。
#
# 2: スタックの内容を表示する関数 print_stack_list(s)は分割しているので、分割コンパイルにより
# 実行ファイルを作れ。

stack(s,[]). 

リストsを用いてスタックの基本操作を行う :- 
    open('data.dat',read,Instrem), 
    get_char(Instream,C), 
    stack(s,L1), 
    リストsを用いてスタックの基本操作を行う(Instream,C,L1,L2), 
    close(Instream), 
    save_stack(s,L2). 

リストsを用いてスタックの基本操作を行う(Instream,end_of_file,L,L) :- !. 
リストsを用いてスタックの基本操作を行う(Instream,C,L1,L2) :- 
    push(C,L1,L3), 
    get_char(Instream,C2), 
    リストsを用いてスタックの基本操作を行う(Instream,C2,L3,L2). 

push(A,L,[A|L]). 

save_stack(Stack,L) :- retract(stack(Stack,_)),assertz(stack(Stack,L)).