9.0
2 Nullable
不同于Option的扁平的union,Nullable允许多层嵌套。
该数据结构常用于对接第三方接口,如果第三方接口包含nil等字样空值,便可以用该数据结构包装。
(Nullable (Nullable String))
类型
(Nullable a)
类似于Haskell的Maybe。
类似于其他语言的nil。
类似Just。
procedure
(nullable/map ma f) → (Nullable b)
ma : (Nullable a) f : (-> a b)
Functor::fmap。
procedure
(nullable/chain ma f) → (Nullable b)
ma : (Nullable a) f : (-> a (Nullable b))
Monad::bind
procedure
(nullable/unwrap-exn ma e) → a
ma : (Nullable a) e : exn (nullable/unwrap-error ma msg) → a ma : (Nullable a) msg : String (nullable/unwrap ma) → a ma : (Nullable a)
强制取值。
procedure
(nullable/filter-map xs f) → (Listof b)
xs : (Listof a) f : (-> a (Nullable b))
过滤数组。
procedure
(nullable/cat-somes xs) → (Listof a)
xs : (Listof (Nullable a))
只取出some值。
procedure
(nullable->option ma) → (Option a)
ma : (Nullable a) (option->nullable ma) → (Nullable a) ma : (Option a)
syntax
(do/nullable? do语句 ...)
do语句 =
| 绑定语句 | 赋值语句 赋值语句 = (define datum ...) 绑定语句 = (identifier <- datum)
类似于do?。