我是編程新手,正在通過SICP工作,並熱愛它。雖然我有點困惑方案的語法定義,主要是,有什麼區別:關於定義語法的問題
(define foo bar)
和:
(define (foo) bar)
是第一個剛分配欄foo和執行呢?第二個分配和等待電話?
如果是的話,你將如何去調用另一個函數內部的功能,比如說內的if語句,
(if (foo) ...)
或
我是編程新手,正在通過SICP工作,並熱愛它。雖然我有點困惑方案的語法定義,主要是,有什麼區別:關於定義語法的問題
(define foo bar)
和:
(define (foo) bar)
是第一個剛分配欄foo和執行呢?第二個分配和等待電話?
如果是的話,你將如何去調用另一個函數內部的功能,比如說內的if語句,
(if (foo) ...)
或
第一個版本創建一個名爲foo的變量併爲其分配一個對bar的引用。沒有別的東西被執行。
第二個版本用主體欄創建一個函數。該函數沒有得到執行,它被取消(猜測這就是你'等'的意思?)。
您總是通過使其成爲列表中的第一項並評估該列表來調用該函數。
創建一個變量
> (define a 1)
> a
1
創建另一個變量引用另一個變量
> (define b a)
> b
1
創建返回無論是在一個
> (define (c) a)
> c
#<procedure:c>
評估功能
功能> (c)
1
編寫評估另一個函數,並將結果返回
> (define (d) (if (odd? a) (c) 0))
> (d)
1
現在改變它返回函數c
> (define (d) (if (odd? a) c 0))
> (d)
#<procedure:c>
的第二個版本創建一個函數(不帶參數),它相當於
(define foo (lambda() bar))
要調用它,它會是(foo)
感謝您的快速答覆的功能。 – 2009-12-05 03:47:43