我有以下数据类型定义为记录
data Config = Config
{ field1 :: String
, field2 :: String
, field3 :: String
}
我想迭代Config
的每个字段,应用一些函数String -> String
,例如tail
并获得新的Config
。
这样做的惯用方法是什么?优选地,没有繁重的第三方库。
答案 0 :(得分: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