我有以下数据类型定义为记录
data Config = Config
{ field1 :: String
, field2 :: String
, field3 :: String
}
Run Code Online (Sandbox Code Playgroud)
我想迭代每个字段,例如Config应用一些函数String -> String,tail然后得到新的Config.
什么是惯用的方法呢?优选地,没有繁重的第三方库.
lef*_*out 13
那么,最好的办法可能就是
{-# LANGUAGE DeriveFunctor #-}
type Config = Config' String
data Config' a = Config
{ field1 :: a
, field2 :: a
, field3 :: a
} deriving (Functor)
configHeads :: Config -> Config' Char
configHeads = fmap head
Run Code Online (Sandbox Code Playgroud)