9.0
1 option
Option代表为空的类型。
跟Rust等支持和类型不一样,Option仅仅是一个联合别名:(define-type (a) (U #f a))。
也就是说,它不支持嵌套:
结果:
(U False Real) [can expand further: Real]
1.1 常用函数
procedure
(option/map ma f) → (Option b)
ma : (Option a) f : (-> a b)
procedure
(option/unwrap-exn ma err) → a
ma : (Option a) err : exn
如果ma为#f,会抛出用户指定的exn——也就是err参数。
procedure
(option/unwrap-error ma err-msg) → a
ma : (Option a) err-msg : String
#f抛出exn:fail:user。
procedure
(option/unwrap ma) → a
ma : (Option a)
类似于Rust的Option::unwrap,遇到#f直接抛出exn:fail:user。
1.2 do?语法糖
类似于Haskell的do记法。
syntax
(do? do语句 ...)
do语句 =
| 绑定语句 | 赋值语句 赋值语句 = (define datum ...) 绑定语句 = (identifer <- datum)
(do? (a <- #f) (define b : Real 2) (+ b a))