我有类似以下内容
data A = A
{ id :: Integer
, foo :: Maybe String
, bar :: Maybe String
, baz :: Maybe String
}
Run Code Online (Sandbox Code Playgroud)
这些数据作为JSON进入我的服务.当一个或多个的这种请求仅视为有效foo,bar或baz给出.有没有更好的方法在Haskell的类型系统中表达这一点?
注意:很遗憾,我无法提出这些单独的请求.我只是遵循一个定义的协议.
lef*_*out 11
http://hackage.haskell.org/package/these-0.4.2/docs/Data-These.html
import Data.These
data A = A
{ id :: Integer
, fooBarBaz :: These Foo (These Bar Baz)
}
type Foo = String
type Bar = String
type Baz = String
Run Code Online (Sandbox Code Playgroud)