2016-09-15 11 views
-2

で関数を定義するためにλを使用することで動作します:機能後ラケット

(define (testfn) 
    (define (contains sl item) (ormap (λ(x)(equal? item x)) sl)) 
    (if (contains (list 1 2 3) 2) "yes" "no")) 

(testfn) 

出力:

(define (testfn2) 
    (λ (contains sl item) (ormap (λ(x)(equal? item x)) sl)) 
    (if (contains (list 1 2 3) 2) "yes" "no")) 

エラーは次のとおりです。

"yes" 

しかし、以下、λ記号を使用して、しません:

contains: unbound identifier in module in: contains 

λシンボルを使用して、複数の場所で呼び出すことができる内部(または一般)関数を定義できますか?

+3

'λ'は' define'ではなく 'lambda'のエイリアスです。 –

+0

"λsymbol"は小文字のギリシャ文字* lambda *です。 – molbdnilo

答えて

0

はい、他の識別子と同じように定義する必要があります。

(define (testfn2) 
    (define contains (λ (sl item) (ormap (λ(x)(equal? item x)) sl))) 
    (if (contains (list 1 2 3) 2) "yes" "no")) 

あなたのコードでは、関数を作成しますが、(1)それが何にも束縛されず、(2)それは、実際に「含まれている」である最初のうち3つの引数を取ります。

関連する問題