めざましテレビ
今日の早耳ムスメは臼田あさ美ちゃーん,お題は「定番をおさえろ! ファストフード新メニュー」.
またしてもあさ美ちゃんがヘビロテに♪
っていうか,ファストフードってこの前もやったばかりじゃない?
あの時はせっかくのファストフードなのにあさ美ちゃんじゃなくて,1! L! M! って一緒にやれなくて残念な思いをしたわけですが,今回はいかに!?
むぅ... モスバーガーでは M! ポーズなし.まぁ,まだマックがあるからいいか.
むむぅ... ファーストキッチンでも 1! ポーズなし.大丈夫か??
うぬぬぅ... サブウェイってなんだよ!? S! ポーズどころかお店に入るシーンすらなしじゃん!!
ぬおぉぉっ... 終わりかよ!!!!
なんてこった,あさ美ちゃんなのに一緒に 1! も L! も M! もできなかったとは... 無念だ.
っていうか,まこたんといい星海銀さんといい,みんなあさ美ちゃんを心配していて面白い.(^^;
あさ美ちゃん,早く心配されない状態に戻ってねぇ〜.
ともあれ (JW),おでこは出さない方がかわいいんじゃないかなぁ?
Prolog 写経記 その 15 join/3
(ほぼ) 毎日淡々と Prolog を写経します.元ネタはこちら.
- 作者: ボグダンフィリピッチ,中島誠,伊藤哲郎
- 出版社/メーカー: 海文堂出版
- 発売日: 1990/08
- メディア: 単行本
- 購入: 4人 クリック: 33回
- この商品を含むブログ (68件) を見る
join/3
を写経します.解説
join(List1, List2, List)
はList1
とList2
各々のリストから順次択一的に要素を取り出し,結合してList
にする.
ふむ.Java の場合だと... そのまんまなものはないような.
Perl なんかで配列からマップを作るのに近い感じかなぁ.できあがるのはマップでもなんでもない只野^h^hただのリストだけど.
モード
join(+, +, ?)
お,いつものように逆向きには使えないようですね.ちょっと意外.
定義
では,こいつの定義を写経しませう.
join([], [], []). join([X|List1], [Y|List2], [X, Y|List]) :- join(List1, List2, List).
ふむ.
まぁ普通にこうなるよなぁという感じ.
でもでも,なぜこれでモードが join(+, +, ?)
なのかが分からない...
別に join(?, ?, ?)
でも構わないような.例によって,実際は join(+, +, ?)
または join(?, ?, +)
のどちらかということになりますが.
とりあえず,要チェック.
注記
List1
とList2
は同じ長さでなければならない.そうでなければjoin
は失敗する.
ほほー.
特にエラーチェックをしなくてもそうなるわけですか.ちょっといいかも.
なるほどね,長さが同じじゃないと片方のリストが先に空になって,その場合はどの節にもマッチしないというわけですか.ふむふむ.
例
では使用例を写経しませう.
2 ?- join([0, 2, 4, 6], [1, 3, 5, 7], L). L = [0, 1, 2, 3, 4, 5, 6, 7] Yes 3 ?- join([a, b, c], ['A', 'B', 'C', 'D'], Chars). No 4 ?- join([1], [], [1],). ERROR: Syntax error: Illegal start of term ERROR: join([1], [], [1], ERROR: ** here ** ERROR: ) .
ぐはぁっ.
っていうか,実は予想通り.
最後の例,文法的に変だよね.そんな変なとこにカンマがあったらおかしいべ.
正しくは
4 ?- join([1], [], [1]). No
だよね.間違いない.
んで,逆向きに使えないのか検証.
5 ?- join(X, Y, [a, b, c, d]). X = [a, c] Y = [b, d] ; No 6 ?- join(X, Y, [a, b, c]). No
なんだ,ばっちり使えてるじゃん!?
うーみゅ,モードの表記に一貫性がないような気のせいが...
まぁいいか.
Logic Programming with Prolog
- 作者: Max Bramer
- 出版社/メーカー: Springer
- 発売日: 2005/07/01
- メディア: ペーパーバック
- クリック: 5回
- この商品を含むブログ (3件) を見る
とても薄いです.220 ページ余り.それで 5,645 円は割高な感じがしないでもないですが,気にしない気にしない.
最大の特徴は,多くの Prolog 本と違って AI プログラミングとかパズルを解くとかって内容ではなく,「ふつうの Prolog プログラミング」な雰囲気になっていること.
なんたって,8 クイーンとか出てこない!!
っていうか,ちゃんと
Hello World!
で始まってる!!こういう Prolog 本って意外とないんじゃないかなぁ?
目次は次の通り.
- 1. Getting Started
- 2. Clauses and Predicates
- 3. Satisfying Goals
- 4. Operators and Arithmetic
- 5. Input and Output
- 6. Loops
- 7. Preventing Backtracking
- 8. Changing the Prolog Database
- 9. List Processing
- 10. String Processing
- 11. More Advanced Features
- Appendix 1. Built-in Predicates
- Appendix 2. Built-in Operators
- Appendix 3. Specimen Solutions to Practical Exercises
- Appendix 4. Glossary
始めの方ではとにかく Prolog の基本的な構文と動きを説明することに重点を置いているっぽくて好印象.
Java とかしか知らない人が最初に読む Prolog 本としては悪くないのかなぁという感じ.ただし,全体的に説明はあっさり気味.
差分リストなんかは取り上げられていないようなので,そういうのを求める人には不向きかも〜.
本書の Introduction でいくつかの Prolog 処理系が紹介されているのですが,特に目を引いたものをピックアップ.
- //www.visual-prolog.com/">Visual Prolog:Basic & Visual Basic の違いと同じくらい,普通の Prolog とは別物っぽい処理系.
でもでも,かなり興味深いです.IDE が使えること,GUI アプリが作れるらしいこと,そしてオブジェクト指向に拡張されているらしいこと.
Prolog の処理系って,どれもコマンドラインベース (GUI アプリのようでターミナルもどきとか) で今風な感じがしないものばかりだと感じていたのですが,これはちょっと違うみたい.
Allegro Common Lisp の Prolog 版ってないかなぁと思っていたので (ACL 上で Prolog を実装しているみたいですが),ちょっと興味あり. - //goanna.cs.rmit.edu.au/~winikoff/wp/">W-Prolog:こちらは Prolog のサブセット的な処理系というか実装らしい.
注目は Java で書かれているということ.なので,普通の Java アプリに埋め込んで使えるようです.
このサイトのページにある「Start W-Prolog」ボタンを押すとアプレットから Prolog プログラミングを楽しむことも出来ます.ちゃんと写経本のappend/3
やconc/3
も動いたよ.
他にも Pure Java な実装へのリンクが.要チェック!!
Prolog Programming for Artificial Intelligence
ICSS.Bratko: Prolog Programming f_p3 (3rd Edition) (International Computer Science Series)
- 作者: Ivan Bratko
- 出版社/メーカー: Pearson
- 発売日: 2000/09/18
- メディア: ペーパーバック
- クリック: 2回
- この商品を含むブログ (4件) を見る
ともあれ (JW),第二版の翻訳と比べると,「Prolog への入門 (isbn:476490165X)」に相当する前半部は大きな違いはなさそう.
第二版はエジンバラ構文なるものだったのが第三版では ISO 準拠になったようですが,その違いがどのくらいのものなのかおいらにはよく分かりません.まだ読んでないし.
一方,「AI プログラミング (isbn:4764902540)」に相当する後半部分はかなり変化している模様.注目は新設された「14. Constraint Logic Programming」か.「19. Inductive Logic Programming」「23. Meta-Programming」も興味津々.
とりあえず,この辺りにたどり着くのはもうちょっと先だなぁ.
Open Multithreaded Transactions & Communicating Sequential Processes
Open Multithreaded Transactions: A Transaction Model for Concurrent Object-Oriented Programming
- 作者: Joerg Kienzle
- 出版社/メーカー: Springer
- 発売日: 2003/11/30
- メディア: ハードカバー
- この商品を含むブログ (2件) を見る
現在は 15,360 円.結構お得♪
なんて喜んでいたら,PDF で丸ごと公開されているじゃあーりませんか.
http://jotm.objectweb.org/related/kienzle-thesis.pdf
速攻でキャンセルしましたとも.発送される前に気づいてよかったぁ〜.
とりあえず読むべし.それにしても,何故に Ada??
03:20 追記
Amazon で「1 点在庫あり」になってますね.おいらがキャンセルした分なんだろうなぁ.おそらく,一緒に注文した本のおかげで発送されていなかったのでしょう.危なかったなぁ.
ついでに,「ホーアCSPモデルの理論 (isbn:4621036831)」の原書「Communicating Sequential Processes (isbn:0131532715)」も丸ごと PDF が!!
http://www.usingcsp.com/cspbook.pdf
まぁ,日本語でも読むのが辛いので英語で読む気にはなれませんが.