如何迭代记录字段?

Fil*_*oft 5 haskell records

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

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)