2016-09-15 114 views
-2

定義功能以下功能的工作原理:使用λ球拍

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

(testfn) 

輸出:

"yes" 

但以下,使用λ符號,並不:

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

錯誤是:

contains: unbound identifier in module in: contains 

λ符號可以用來定義可能在多個地方調用的內部(或一般)函數嗎?

+3

'λ'是'lambda'的別名,而不是'define'。 –

+0

「λ符號」是小寫的希臘字符* 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),它實際上有三個參數,其中第一個就是「載」。