Differences From Artifact [33d07971634f6989]:
- File
index.dd
- 2010-11-27 15:49:30 - part of checkin [6de3d8df3a] on branch trunk - reference manual completed (user: kinaba) [annotate]
To Artifact [a39b25f2bef916f0]:
- File
index.dd
- 2010-11-27 23:46:51 - part of checkin [576c494e53] on branch trunk - fixed: literal "..." is now lifted in user-defined layers (user: kinaba) [annotate]
13 <p> 13 <p>
14 あと、 やたらとマクロの章が長くなっていますが、 この部分は、 14 あと、 やたらとマクロの章が長くなっていますが、 この部分は、
15 レイヤ機能を入れたら自動的にすごく自然にマクロが入るなーと思って、 15 レイヤ機能を入れたら自動的にすごく自然にマクロが入るなーと思って、
16 おまけで実装してみた程度のものです。 16 おまけで実装してみた程度のものです。
17 あんまり重要ではないので、適当にスルーして下さいませ。 17 あんまり重要ではないので、適当にスルーして下さいませ。
18 単に、適当に入れたら適当で微妙な部分が多く残ってしまったので注意書きが増えているだけで…。 18 単に、適当に入れたら適当で微妙な部分が多く残ってしまったので注意書きが増えているだけで…。
19 </p> 19 </p>
> 20 <p>
> 21 言い訳ついでにもう一つ言い訳ですが、この言語は、少なとも今のところ、
> 22 実用に使うことを考えた設計にはなっていません。どちらというと、
> 23 Brainfuck や Unlambda や Whitespace の仲間と思ってお使い下さい。
> 24 </p>
20 25
21 $(DDOC_MEMBERS 26 $(DDOC_MEMBERS
22 27
23 $(SECTION Syntax, $(SECBODY 28 $(SECTION Syntax, $(SECBODY
24 <p> 29 <p>
25 文法について。 30 文法について。
26 字句解析がわりと適当なので、 31 字句解析がわりと適当なので、
................................................................................................................................................................................
519 </p> 524 </p>
520 <pre> 525 <pre>
521 @@type = fun(x) { 526 @@type = fun(x) {
522 if( _isint(x) ) then "int" 527 if( _isint(x) ) then "int"
523 else if( _isstr(x) ) then "str" 528 else if( _isstr(x) ) then "str"
524 else if( _isbot(x) ) then "runtime error" 529 else if( _isbot(x) ) then "runtime error"
525 else "type error" 530 else "type error"
526 } | 531 };
527 </pre> 532 </pre>
528 <pre> 533 <pre>
529 >> @type( 1 ) 534 >> @type( 1 )
530 int 535 int
531 >> @type( 2 ) 536 >> @type( 2 )
532 int 537 int
533 >> @type( "foo" ) 538 >> @type( "foo" )
................................................................................................................................................................................
568 </p> 573 </p>
569 <pre> 574 <pre>
570 @type "if" (c, t, e) {@value( 575 @type "if" (c, t, e) {@value(
571 if( @type(c)=="int" || @type(c)=="runtime error" ) then 576 if( @type(c)=="int" || @type(c)=="runtime error" ) then
572 @type( int_int_int(t(), e()) ) 577 @type( int_int_int(t(), e()) )
573 else 578 else
574 "type error" 579 "type error"
575 )} | 580 )};
576 </pre> 581 </pre>
577 <p> 582 <p>
578 関数が自動リフトされるので、フィボナッチ関数の型を調べることができます。 583 関数が自動リフトされるので、フィボナッチ関数の型を調べることができます。
579 </p> 584 </p>
580 <pre> 585 <pre>
581 >> def fib(x) { if x<2 then 1 else fib(x-1)+fib(x-2) }; 586 >> def fib(x) { if x<2 then 1 else fib(x-1)+fib(x-2) };
582 >> @type( fib(100000000000000) ) 587 >> @type( fib(100000000000000) )