基本的定義形式
(define id expr)
id綁定expr的結(jié)果
4.5.1function 簡寫
define也支持函數(shù)的簡寫
(define (id arg ...) body ...+)
標(biāo)準(zhǔn)寫法是
(define id (lambda (arg ...) body ...+))
函數(shù)的簡寫也支持剩余參數(shù)
4.5.2柯里化函數(shù)簡寫
(define make-add-suffix
(lambda (s2)
(lambda (s) (string-append s s2))))
從某種角度來說余掖, make-add-suffix是一個兩個參數(shù)的函數(shù)蜕琴,但是實際上一次只能接收一個图张。一個函數(shù)接受一些參數(shù)返回一個接收另外一些參數(shù)的函數(shù)叫柯里化函數(shù)靖榕。
(define (make-add-suffix s2)
(lambda (s) (string-append s s2)))
這種簡寫方式反應(yīng)了函數(shù)的調(diào)用方式。define也支持簡寫來定義柯里化函數(shù)調(diào)用抗果。
(define ((make-ass-suffix s2) s)
(string-append s s2))
4.5.3多值和define-values
Racket 可以返回多值。試用values函數(shù)踢械。
(define-values (id ...) expr)
可以實現(xiàn)多值綁定。
4.5.4 內(nèi)部定義
語法聲明里面的body可以是標(biāo)識符或者表達(dá)式魄藕。在body內(nèi)部的定義是內(nèi)部定義内列。
內(nèi)部定義和表達(dá)式可以混在一起,只要body最后返回的是表達(dá)式就可以了背率。
內(nèi)部定義要在引用前定義话瞧,否則會發(fā)生錯誤。
內(nèi)部定義會被翻譯成等價的letrec形式寝姿。但是包括define-values交排,struct,define-syntax都可以出現(xiàn)在body里面饵筑。