Diff
Not logged in

Differences From Artifact [bd75516fd263e529]:

To Artifact [49fcca2a72fbb7a0]:


284 284 以下のデータ型があります。 285 285 </p> 286 286 <ul> 287 287 <li>整数: <tt>0</tt>, <tt>123</tt>, <tt>456666666666666666666666666666666666666789</tt>, ...</li> 288 288 <li>文字列: <tt>"hello, world!"</tt>, ...</li> 289 289 <li>関数: <tt>fun(x){x+1}</tt></li> 290 290 <li>テーブル: <tt>{car: 1, cdr: {car: 2, cdr: {}}}</tt></li> 291 - <li>未定義値: (テーブルの、存在しないフィールドにアクセスしたりすると作れます)</li> 291 + <li>未定義値: (undefined。特殊なケースで作られます)</li> 292 292 </ul> 293 293 <p> 294 294 関数はいわゆる「クロージャ」です。静的スコープで外側の環境にアクセスできます。 295 295 テーブルはいわゆるプロトタイプチェーンを持っていて、 296 296 自分にないフィールドの場合は親に問い合わせが行く感じになっていますが、 297 297 フィールドの書き換えがないので、これは特に意味ないかもしれない…。 298 298 </p> 299 +<p> 300 +また、リストを扱うために、いわゆる「cons リスト」を使います。 301 +空リストを <tt>{}</tt>、1個以上要素があるものを <tt>{car: 先頭要素, cdr: 二番目以降のリスト}</tt> 302 +という形で。この形でリストを扱わなければならないという決まりはありませんが、 303 +この形は特別扱いされて <tt>print</tt> で綺麗に出力されたりします。 304 +</p> 299 305 </dd> 300 306 301 307 <script>explorer.outline.writeEnabled = true;</script> 302 308 <dt><span class="decl"> 303 309 <span class="currsymbol">パターンマッチ</span> 304 310 <script>explorer.outline.addDecl('パターンマッチ');</script> 305 311 ................................................................................ 608 614 ) 609 615 }; 610 616 611 617 Here, x is a syntax tree but n is an actual integer. If you read carefully, 612 618 you should get what is going on. Basically, @macro can be considered like 613 619 quasiquoting and @value to be an escape from it. 614 620 </pre> 621 +<p> 622 +構文木がどのようなテーブルで渡されてくるかについては、ソースドキュメントの 623 +<a href="http://www.kmonos.net/repos/polemy/doc/tip/doc/ast.html">polemy.ast</a> 624 +のページをご覧下さい。例えば変数名を表す <code>Var</code> クラスには、 625 +継承の分も合わせて 626 +<tt><a href="http://www.kmonos.net/repos/polemy/doc/tip/doc/failure.html">LexPosition</a> pos;</tt> 627 +と <tt>string name;</tt> の2つのメンバがあるので 628 +</p> 629 +<pre> 630 + { is: "Var", 631 + pos: {filename:"foo.pmy", lineno:123, column:45}, 632 + name: "x" } 633 +</pre> 634 +<p> 635 +こんな感じのテーブルになります。 636 +クラス名が <tt>is</tt> フィールドに、メンバ変数はそのままの名前で入ります。 637 +配列メンバは cons リストになって入ってきます。 638 +</p> 615 639 </dd> 616 640 617 641 <script>explorer.outline.writeEnabled = true;</script> 618 642 <dt><span class="decl"> 619 643 <span class="currsymbol">微妙な挙動</span> 620 644 <script>explorer.outline.addDecl('微妙な挙動');</script> 621 645 ................................................................................ 776 800 <script>explorer.outline.decSymbolLevel();</script> 777 801 778 802 779 803 </td></tr> 780 804 <tr><td id="docfooter"> 781 805 Page was generated with 782 806 <img src="candydoc/img/candydoc.gif" style="vertical-align:middle; position:relative; top:-1px"> 783 - on Wed Nov 24 19:09:31 2010 807 + on Wed Nov 24 20:33:08 2010 784 808 785 809 </td></tr> 786 810 </table> 787 811 </div> 788 812 <script> 789 813 explorer.packageExplorer.addModule("index"); 790 814 explorer.packageExplorer.addModule("main");