@@ -287,16 +287,22 @@
  • 整数: 0, 123, 456666666666666666666666666666666666666789, ...
  • 文字列: "hello, world!", ...
  • 関数: fun(x){x+1}
  • テーブル: {car: 1, cdr: {car: 2, cdr: {}}}
  • -
  • 未定義値: (テーブルの、存在しないフィールドにアクセスしたりすると作れます)
  • +
  • 未定義値: (undefined。特殊なケースで作られます)
  • 関数はいわゆる「クロージャ」です。静的スコープで外側の環境にアクセスできます。 テーブルはいわゆるプロトタイプチェーンを持っていて、 自分にないフィールドの場合は親に問い合わせが行く感じになっていますが、 フィールドの書き換えがないので、これは特に意味ないかもしれない…。

    +

    +また、リストを扱うために、いわゆる「cons リスト」を使います。 +空リストを {}、1個以上要素があるものを {car: 先頭要素, cdr: 二番目以降のリスト} +という形で。この形でリストを扱わなければならないという決まりはありませんが、 +この形は特別扱いされて print で綺麗に出力されたりします。 +

    @@ -611,8 +617,26 @@ Here, x is a syntax tree but n is an actual integer. If you read carefully, you should get what is going on. Basically, @macro can be considered like quasiquoting and @value to be an escape from it. +

    +構文木がどのようなテーブルで渡されてくるかについては、ソースドキュメントの +polemy.ast +のページをご覧下さい。例えば変数名を表す Var クラスには、 +継承の分も合わせて +LexPosition pos; +と string name; の2つのメンバがあるので +

    +
    +    { is:   "Var",
    +      pos:  {filename:"foo.pmy", lineno:123, column:45},
    +      name: "x" }
    +
    +

    +こんな感じのテーブルになります。 +クラス名が is フィールドに、メンバ変数はそのままの名前で入ります。 +配列メンバは cons リストになって入ってきます。 +

    @@ -779,9 +803,9 @@ Page was generated with - on Wed Nov 24 19:09:31 2010 + on Wed Nov 24 20:33:08 2010