Diff
Not logged in

Differences From Artifact [d0516fddd5213f2d]:

To Artifact [34739585fd5c7798]:


30 <p> 30 <p> 31 あと、 やたらとマクロの章が長くなっていますが、 この部分は、 31 あと、 やたらとマクロの章が長くなっていますが、 この部分は、 32 レイヤ機能を入れたら自動的にすごく自然にマクロが入るなーと思って、 32 レイヤ機能を入れたら自動的にすごく自然にマクロが入るなーと思って、 33 おまけで実装してみた程度のものです。 33 おまけで実装してみた程度のものです。 34 あんまり重要ではないので、適当にスルーして下さいませ。 34 あんまり重要ではないので、適当にスルーして下さいませ。 35 単に、適当に入れたら適当で微妙な部分が多く残ってしまったので注意書きが増えているだけで…。 35 単に、適当に入れたら適当で微妙な部分が多く残ってしまったので注意書きが増えているだけで…。 36 </p> 36 </p> > 37 <p> > 38 言い訳ついでにもう一つ言い訳ですが、この言語は、少なとも今のところ、 > 39 実用に使うことを考えた設計にはなっていません。どちらというと、 > 40 Brainfuck や Unlambda や Whitespace の仲間と思ってお使い下さい。 > 41 </p> 37 42 38 43 39 <script>explorer.outline.incSymbolLevel();</script> 44 <script>explorer.outline.incSymbolLevel();</script> 40 <dl> 45 <dl> 41 <script>explorer.outline.writeEnabled = true;</script> 46 <script>explorer.outline.writeEnabled = true;</script> 42 <dt><span class="decl"> 47 <dt><span class="decl"> 43 <span class="currsymbol">Syntax</span> 48 <span class="currsymbol">Syntax</span> ................................................................................................................................................................................ 672 </p> 677 </p> 673 <pre> 678 <pre> 674 @@type = fun(x) { 679 @@type = fun(x) { 675 if( _isint(x) ) then "int" 680 if( _isint(x) ) then "int" 676 else if( _isstr(x) ) then "str" 681 else if( _isstr(x) ) then "str" 677 else if( _isbot(x) ) then "runtime error" 682 else if( _isbot(x) ) then "runtime error" 678 else "type error" 683 else "type error" 679 } | 684 }; 680 </pre> 685 </pre> 681 <pre> 686 <pre> 682 &gt;&gt; @type( 1 ) 687 &gt;&gt; @type( 1 ) 683 int 688 int 684 &gt;&gt; @type( 2 ) 689 &gt;&gt; @type( 2 ) 685 int 690 int 686 &gt;&gt; @type( "foo" ) 691 &gt;&gt; @type( "foo" ) ................................................................................................................................................................................ 721 </p> 726 </p> 722 <pre> 727 <pre> 723 @type "if" (c, t, e) {@value( 728 @type "if" (c, t, e) {@value( 724 if( @type(c)=="int" || @type(c)=="runtime error" ) then 729 if( @type(c)=="int" || @type(c)=="runtime error" ) then 725 @type( int_int_int(t(), e()) ) 730 @type( int_int_int(t(), e()) ) 726 else 731 else 727 "type error" 732 "type error" 728 )} | 733 )}; 729 </pre> 734 </pre> 730 <p> 735 <p> 731 関数が自動リフトされるので、フィボナッチ関数の型を調べることができます。 736 関数が自動リフトされるので、フィボナッチ関数の型を調べることができます。 732 </p> 737 </p> 733 <pre> 738 <pre> 734 &gt;&gt; def fib(x) { if x&lt;2 then 1 else fib(x-1)+fib(x-2) }; 739 &gt;&gt; def fib(x) { if x&lt;2 then 1 else fib(x-1)+fib(x-2) }; 735 &gt;&gt; @type( fib(100000000000000) ) 740 &gt;&gt; @type( fib(100000000000000) ) ................................................................................................................................................................................ 1152 <script>explorer.outline.decSymbolLevel();</script> 1157 <script>explorer.outline.decSymbolLevel();</script> 1153 1158 1154 1159 1155 </td></tr> 1160 </td></tr> 1156 <tr><td id="docfooter"> 1161 <tr><td id="docfooter"> 1157 Page was generated with 1162 Page was generated with 1158 <img src="candydoc/img/candydoc.gif" style="vertical-ali 1163 <img src="candydoc/img/candydoc.gif" style="vertical-ali 1159 on Sun Nov 28 00:45:59 2010 | 1164 on Sun Nov 28 07:29:42 2010 1160 1165 1161 </td></tr> 1166 </td></tr> 1162 </table> 1167 </table> 1163 </div> 1168 </div> 1164 <script> 1169 <script> 1165 explorer.packageExplorer.addModule("index"); 1170 explorer.packageExplorer.addModule("index"); 1166 explorer.packageExplorer.addModule("main"); 1171 explorer.packageExplorer.addModule("main");