Index: doc/index.html ================================================================== --- doc/index.html +++ doc/index.html @@ -392,22 +392,64 @@

この言語の唯一の特徴的な部分は、「レイヤ」機能です。

+

+ひとつのコードに複数の「意味」を持たせるのが、レイヤ機能の目的です。 +

-Layers - +概要 +
-
+ 

+普通に Polemy のコードを動かすと、そのコードは「@value レイヤ」で動作します。 +インタプリタで実験。 +

+
+    $ bin/polemy
+    Welcome to Polemy 0.1.0
+    >> 1 + 2
+    3
+
+この、普通に、数字の 1 は数字の 1 として、2 は 2 として、足し算は足し算として実行するのが、 +「@value レイヤ」です。 +レイヤを明示的に指定するには、レイヤ名( ... ) という構文を使います。 +なので、以下のように書いても同じ意味です。 +
+    >> @value( 1 + 2 )
+    3
+
+他のレイヤで動かしてみましょう。適当に。「@hoge レイヤ」で。 +
+    >> @hoge( 3 )
+    polemy.failure.RuntimeException@C:\Develop\Projects\Polemy\polemy\eval.d(138):
+    [:4:8] lift function for @hoge is not registered
+
+

+エラーになりました。Polemy のインタプリタは、起動時には、@value +レイヤでのコードの意味しか知りません。@hoge レイヤでは 3 +というのがどんな意味なのか、わかりません!というエラーが出ています。 +

+

+これを教えてあげるためには、@hoge レイヤの リフト関数 を定義します。 +

+
+    >> @@hoge = fun(x){ x*2 }
+    (function:1bdc5c0:1ba8580)
+
+

+「@ レイヤ名 = ...」文で、 +

+
 [Layers :: Overview]
 
   Polemy's runtime environment has many "layer"s.
   Usual execution run in the @value layer.
 
@@ -954,11 +996,11 @@
 
 
 		
 			Page was generated with
 			
-			on Sat Nov 27 20:49:57 2010
+			on Sat Nov 27 22:01:28 2010