On this page:
Nullable
nil
some
some?
nil?
nullable/  map
nullable/  chain
nullable/  unwrap-exn
nullable/  unwrap-error
nullable/  unwrap
nullable/  filter-map
nullable/  cat-somes
nullable->option
option->nullable
do/  nullable?
9.0

2 Nullable🔗ℹ

不同于Option的扁平的union,Nullable允许多层嵌套。

该数据结构常用于对接第三方接口,如果第三方接口包含nil等字样空值,便可以用该数据结构包装。

(Nullable (Nullable String))

类型

(Nullable a)

类似于Haskell的Maybe。

value

nil : (Nullable a)

类似于其他语言的nil。

procedure

(some value)  (Nullable a)

  value : a
类似Just。

procedure

(some? ma)  Boolean

  ma : (Nullable a)
(nil? ma)  Boolean
  ma : (Nullable a)
判断是否nilsome

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)
NullableOption相对转化。

syntax

(do/nullable? do语句 ...)

 
do语句 = 
  | 绑定语句
  | 赋值语句
     
赋值语句 = (define datum ...)
     
绑定语句 = (identifier <- datum)
类似于do?