descartes-src (ソースパッケージ descartes-src-0.26.0.tar.gz) | 2012-09-09 20:57 |
descartes-win (Windows用バイナリパッケージ descartes-win-0.26.0.zip) | 2012-09-09 20:52 |
会話キャラクター: ツンデレ アプリケーション (会話キャラ:ツンデレ v1.0 for Windows) | 2010-04-29 13:41 |
会話キャラクター: 2人の女の子 ダブルキャラクター (会話キャラクター 2人の女の子 ダブルキャラクター 1.0 for Windows) | 2011-10-02 22:23 |
会話キャラクター: Eliza風英語版 (会話キャラ:Eliza風英語版 v1.0 for Windows) | 2010-05-11 01:06 |
会話キャラクター: 猫耳メイド アプリケーション (会話キャラ:猫耳メイド v1.0 for Windows) | 2010-04-27 21:15 |
会話キャラクター: イライザ風日本語版 (会話キャラ:イライザ風日本語版 v1.0 for Windows) | 2010-04-30 21:53 |
経済指標表示プログラム for Windows (経済指標表示プログラム V1.0) | 2011-08-18 22:04 |
ニュースヘッドライン表示プログラム (ニュースヘッドライン表示プログラム V1.0 for Windows) | 2011-08-16 12:31 |
デカルト言語 example (デカルト言語の例題 example-0.7.0.zip) | 2009-03-01 19:47 |
電力状況表示プログラム for Windows (2011年夏版 全国電力供給状況表示プログラム V1.0) | 2011-08-15 13:25 |
リストの平坦化とは、いくつかの階層で構成されたリストを単一の階層のリストに変換することです。
例えば、(a (b (c d) e (f (g)) h i) j k)というリストを、(a b c d e f g h i j k)のように変換します。
// リストの平坦化 // サブルーチン : リスト追加の定義 #xは()と#xのリスト追加です。 #zは#xと#yのリスト追加のとき、 (#a:#z)が(#a:#x)と#yのリスト追加です。 // メイン : リスト平坦化の定義 ()は()のリスト平坦化です。 #xがリストであり、 #list1が#xのリスト平坦化であり、 #list2が#lのリスト平坦化であり、 #listが、#list1と#list2のリスト追加であるとき、 #listは、(#x:#l)のリスト平坦化です。 #list2が#lのリスト平坦化であり、 #listが、(#x)と#list2のリスト追加であるとき、 #listは、(#x:#l)のリスト平坦化です。 // 実行 #listは、 (a (b (c d) e (f (g)) h i) j k)のリスト平坦化ですか。
上記のプログラムをsamples/flatten.mrsにあるとして実行してみましょう。
$ descartes murasaki samples/flatten.mrs #listは、 (a (b (c d) e (f (g)) h i) j k)のリスト平坦化ですか。 (a b c d e f g h i j k)は、(a (b (c d) e (f (g)) h i) j k)のリスト平坦化です。
このプログラムは次に示すようなデカルト言語のプログラムにコンパイルされて実行されたものです。
<M2 リスト追加 #x (() #x)> ; <M2 リスト追加 (#a:#z) ((#a:#x) #y)> <M2 リスト追加 #z (#x #y)> ; <M2 リスト平坦化 () (())> ; <M2 リスト平坦化 #list ((#x:#l))> <M4 リスト #x ()> <M2 リスト平坦化 #list1 (#x)> <M2 リスト平坦化 #list2 (#l)> <M2 リスト追加 #list (#list1 #list2)> ; <M2 リスト平坦化 #list ((#x:#l))> <M2 リスト平坦化 #list2 (#l)> <M2 リスト追加 #list ((#x) #list2)> ; ? <printf '#listは、 (a (b (c d) e (f (g)) h i) j k)のリスト平坦化ですか。' <\_n >>; ? <回答 (<M2 リスト平坦化 #list ((a (b (c d) e (f (g)) h i) j k))>)>; ? <print>;
--
--
[PageInfo]
LastUpdate: 2011-09-07 02:36:55, ModifiedBy: hniwa
[License]
Creative Commons 2.1 Attribution
[Permissions]
view:all, edit:login users, delete/config:login users