スキームには何がありますか?どうすれば使えますか?Scheme Lambda?それは何ですか?
scm> (define (x) 100)
x
scm> (x)
100
scm> x ; When we "called" x, it return (lambda() 100). what is it ?
(lambda() 100)
スキームには何がありますか?どうすれば使えますか?Scheme Lambda?それは何ですか?
scm> (define (x) 100)
x
scm> (x)
100
scm> x ; When we "called" x, it return (lambda() 100). what is it ?
(lambda() 100)
(define (x) 100)
と同じです:あなたはので、ここでアルゴル言語に、よりかもしれない
(define x ; define the variable named x
(lambda() ; as a anoymous function with zero arguments
100)) ; that returns 100
x ; ==> #<function> (some representation of the evaluated lambda object, there is no standard way)
(x) ; ==> 100 (The result of calling the function)
JavaScriptで同じです:
var x = // define the variable named x
function() { // as the anonymous function with zero arguments
return 100; // that returns 100
};
x; // => function() { return 100; } (prints its source)
x(); // => 100 (the result of calling the function)
:
function x() { return 100; }
は同じです
初心者は、のような変数の周りにかっこを追加することがありますAlgol言語でx()()
と書くのと同じです。したがって、x
は、機能するために引数がゼロの関数を返すゼロ引数の関数でなければなりません。
(define (x) 100)
は(define x (lambda() 100))
に相当します。 最初の構文は実際には2番目の構文砂糖です。どちらも手続きを定義します。
x
を使用すると、Schemeインタプリタは自分自身x
を返します。この場合、x
はラムダ式です。 (x)
を使用する場合は、x
という名前のプロシージャを呼び出しています。この方式のインタプリタはの内容をx
に入れます。この場合はラムダ式を返し、戻り値を返します。
ラムダを使用するには、ラムダ式を演算子として考慮します。 だから、((lambda (<arg-list>) <body>) <parameter-list>)
それとも、あなたが変数にラムダ式を定義した場合、たとえば、あなたが何をすべきかなど、オペレーターとして変数を取る、
(define x
(lambda() 100))
(x)