所以Maybe数据类型定义如下:
data Maybe a = Just a | Nothing
Run Code Online (Sandbox Code Playgroud)
您认为与概念相反的数据类型是什么Maybe:
data <Type> = Okay | Error String
Run Code Online (Sandbox Code Playgroud)
也就是说,一种声明计算成功的类型或者保存计算产生的一些错误.
我驳斥了这种类型与"相反"有意义的前提Maybe.我也不同意Either通常应将其理解为错误信号类型 - 由于其monad实例的工作方式,这只是一种非常自然的使用方式.
无论Maybe和Either什么都不知道的错误/失败-他们只是一笔类型(在的情况下的抽象的概念的实现Maybe与单位类型总和).
IMO,您应该只Maybe String为此目的使用,或者如果您喜欢它:
type ErrorMsg = String
type PossibleError = Maybe ErrorMsg
Run Code Online (Sandbox Code Playgroud)