Differences From Artifact [07bae30af3901ecf]:
- File
index.dd
- 2010-11-24 10:31:49 - part of checkin [8caee17864] on branch trunk - added documents. (user: kinaba) [annotate]
To Artifact [b4c241e12eddc95c]:
- File
index.dd
- 2010-11-24 11:34:03 - part of checkin [c0158c9281] on branch trunk - document updated (user: kinaba) [annotate]
199 199 以下のデータ型があります。
200 200 </p>
201 201 <ul>
202 202 <li>整数: <tt>0</tt>, <tt>123</tt>, <tt>456666666666666666666666666666666666666789</tt>, ...</li>
203 203 <li>文字列: <tt>"hello, world!"</tt>, ...</li>
204 204 <li>関数: <tt>fun(x){x+1}</tt></li>
205 205 <li>テーブル: <tt>{car: 1, cdr: {car: 2, cdr: {}}}</tt></li>
206 - <li>未定義値: (テーブルの、存在しないフィールドにアクセスしたりすると作れます)</li>
206 + <li>未定義値: (undefined。特殊なケースで作られます)</li>
207 207 </ul>
208 208 <p>
209 209 関数はいわゆる「クロージャ」です。静的スコープで外側の環境にアクセスできます。
210 210 テーブルはいわゆるプロトタイプチェーンを持っていて、
211 211 自分にないフィールドの場合は親に問い合わせが行く感じになっていますが、
212 212 フィールドの書き換えがないので、これは特に意味ないかもしれない…。
213 213 </p>
214 +<p>
215 +また、リストを扱うために、いわゆる「cons リスト」を使います。
216 +空リストを <tt>{}</tt>、1個以上要素があるものを <tt>{car: 先頭要素, cdr: 二番目以降のリスト}</tt>
217 +という形で。この形でリストを扱わなければならないという決まりはありませんが、
218 +この形は特別扱いされて <tt>print</tt> で綺麗に出力されたりします。
219 +</p>
214 220 ))
215 221 $(SECTION パターンマッチ, $(SECBODY
216 222 <p>
217 223 適当に実装されたパターンマッチがあります。
218 224 リストの 2n 番目と 2n+1 番目を足して長さを半分にする関数:
219 225 </p>
220 226 <pre>
................................................................................
487 493 )
488 494 };
489 495
490 496 Here, x is a syntax tree but n is an actual integer. If you read carefully,
491 497 you should get what is going on. Basically, @macro can be considered like
492 498 quasiquoting and @value to be an escape from it.
493 499 </pre>
500 +<p>
501 +構文木がどのようなテーブルで渡されてくるかについては、ソースドキュメントの
502 +<a href="http://www.kmonos.net/repos/polemy/doc/tip/doc/ast.html">polemy.ast</a>
503 +のページをご覧下さい。例えば変数名を表す <code>Var</code> クラスには、
504 +継承の分も合わせて
505 +<tt><a href="http://www.kmonos.net/repos/polemy/doc/tip/doc/failure.html">LexPosition</a> pos;</tt>
506 +と <tt>string name;</tt> の2つのメンバがあるので
507 +</p>
508 +<pre>
509 + { is: "Var",
510 + pos: {filename:"foo.pmy", lineno:123, column:45},
511 + name: "x" }
512 +</pre>
513 +<p>
514 +こんな感じのテーブルになります。
515 +クラス名が <tt>is</tt> フィールドに、メンバ変数はそのままの名前で入ります。
516 +配列メンバは cons リストになって入ってきます。
517 +</p>
494 518 ))
495 519 $(SECTION 微妙な挙動, $(SECBODY
496 520 <pre>
497 521 (rawmacro) レイヤの話
498 522
499 523 [[limitations]]
500 524