类型系统中的强制Maybes

Jus*_*ood 7 haskell

我有类似以下内容

data A = A
  { id :: Integer
  , foo :: Maybe String
  , bar :: Maybe String
  , baz :: Maybe String
  }
Run Code Online (Sandbox Code Playgroud)

这些数据作为JSON进入我的服务.当一个或多个的这种请求仅视为有效foo,barbaz给出.有没有更好的方法在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)

  • 也许包括一个简短的解释,而不仅仅是代码和参考链接. (9认同)
  • 不,它应该是应该如何. (2认同)