Prolog 写経記 その 79 line_type/1
(ほぼ) 毎日淡々と Prolog を写経します.元ネタはこちら.
- 作者: ボグダンフィリピッチ,中島誠,伊藤哲郎
- 出版社/メーカー: 海文堂出版
- 発売日: 1990/08
- メディア: 単行本
- 購入: 4人 クリック: 33回
- この商品を含むブログ (68件) を見る
line_type/1
を写経します.解説
line_type(Type)
は画面上の行の特性を決める.Type
はtop
,bottom
,normal
あるいはwide
のうちの 1 つである.
ふーん.
おらいが使っているのは Windows 版の SWI-Prolog なんですが...
ちゃんと役に立つのでしょうか?
かなり微妙...
(こぴぺ)
モード
line_type(+)
ふむ.
定義
では,こいつの定義を写経しませう.
line_type(Type) :- line_code(Type, Code), escape(Code). line_code(top, '#3') :- !. line_code(bottom, '#4') :- !. line_code(normal, '#5') :- !. line_code(wide, '#6') :- !.
昨日の charset/1
なんかにもありましたが,この line_code/2
ってマップ (連想配列とか辞書とかハッシュとか呼ばれるやつ) ですよね.
こういう,ある種データのようなものがプログラムで直接表現されるのってどうなんでしょうね?
これみたいにマッピングが増えたり減ったりしないのはいいけど,実行時に追加されるようなケースではあんまりうれしくない感じ.
きっと Prologer は遠慮無く Prolog データベースへの追加削除をするんだろうけど.
個人的には気持ち悪い気がするのだけど,それを言い出すと (述語として表現される) 事実といわゆるデータの区別が分からなくなって来ちゃいます...
注意
Type
は画面上にどのように文字を出力するかを定める.normal
は通常の幅 (1 行に 80 文字) で文字を出力し,wide
は 2 倍の幅(1 行に 40 文字)である.一方top
とbottom
は 2 倍の高さと 2 倍の幅の文字を出力するのに用いられる.top
で上半分の,bottom
で下半分の行を初期化する (下の例参照).選択されたタイプは行全体に有効である.
例
では使用例を写経しませう.
write_enlarged(Text) :- nl, line_type(top), write(Text), nl, line_type(bottom), write(Text).
例によって述語が掲載されているだけなので,適当に使ってみます.
2 ?- write_enlarged('Yuri'). 3Yuri 4Yuri Yes
ぐはぁっ,普通にダメっぽい.