- 【論理】Prolog【初心者】
843 :デフォルトの名無しさん[]:2016/11/17(木) 10:52:19.73 ID:u2Ucvcf0 - >>70
SWI-Prologだと、read_line_to_codes/2というような述語があります。第一引数に ストリームがきます。 ?- read_line_to_codes(user_input,X). : qaz X = [113, 97, 122]. となります。 get_line(Stream,Line) :- read_line_to_codes(Stream,L), atom_codes(Line,L). という簡単な定義でピリオドなし入力を定義できます。
|
- なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
793 :デフォルトの名無しさん[]:2016/11/17(木) 11:34:22.18 ID:u2Ucvcf0 - 情報を保存しながら、進むならば、ループだっていつかオーバーフローする。
保存せずに計算できるならば、再帰でもオーバーフローしないかもしれない。
|
- なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
795 :793[sage]:2016/11/17(木) 11:44:39.48 ID:u2Ucvcf0 - >>794
上の行? 下の行? それとも両方?
|
- なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
797 :793[sage]:2016/11/17(木) 13:03:18.99 ID:u2Ucvcf0 - >>796
Prologですから再帰述語で関数ではありませんが、 repeat :- 割り込みあり,!. repeat :- repeat. の場合、スタックの一番上でpop,pushを繰り返すことが可能なのではないでしょうか。
|
- なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
798 :797[sage]:2016/11/17(木) 13:06:35.00 ID:u2Ucvcf0 - すみません。まちがえました。これではrepeat内でのループになってしまって
Prologのrepeatになりませんでした。分かり難くなりますから割り込みを外します。 repeat. repeat :- repeat.
|
- なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
799 :793[sage]:2016/11/17(木) 13:16:05.70 ID:u2Ucvcf0 - >>797 だと、
繰り返しを最終回にするための割り込みとしたかったのですが、 実行開始の遅延を終了するための割り込みになってしまっています。
|