用字母替换字段名称,我有这样的情况:
data Foo = Foo { a :: Maybe ...
, b :: [...]
, c :: Maybe ...
, ... for a lot more fields ...
} deriving (Show, Eq, Ord)
instance Writer Foo where
write x = maybeWrite a ++
listWrite b ++
maybeWrite c ++
... for a lot more fields ...
parser = permute (Foo
<$?> (Nothing, Just `liftM` aParser)
<|?> ([], bParser)
<|?> (Nothing, Just `liftM` cParser)
... for a lot more fields ...
-- …Run Code Online (Sandbox Code Playgroud) 我有两种数据类型,第二种是第一种副本,但每个字段都有Maybe.
data A = {a :: Int, b :: String}
data B = {c :: Maybe Int, d :: Maybe String}
Run Code Online (Sandbox Code Playgroud)
有没有办法发挥作用
f :: A -> B
g :: B -> A -> A
Run Code Online (Sandbox Code Playgroud)
对领域本身没有任何了解?(如果第一个参数的值为nothing,g则将从第二个参数中取默认值)