如何迭代记录字段?

时间:2015-10-07 17:44:41

标签: haskell records

我有以下数据类型定义为记录

data Config = Config
  { field1 :: String
  , field2 :: String
  , field3 :: String
  }

我想迭代Config的每个字段,应用一些函数String -> String,例如tail并获得新的Config

这样做的惯用方法是什么?优选地,没有繁重的第三方库。

1 个答案:

答案 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