我正在尝试读取CSV文件,其中第一行具有每列的名称.然后我必须适当地编辑这些文件.我有一个想法,当我第一次读入文件,然后创建一个名为Record的新数据类型,然后所有后来的记录只是这种类型的实例,现在很明显,如果程序只需处理一种类型的CSV文件一定数量的列这很容易,但遗憾的是,情况并非总是如此.
所以我的问题是你能做点什么吗?
createRecordClass (x:xs) = data Record {addRecord(x:xs)}
addRecord (x:xs) = x::String, addRecord xs
Run Code Online (Sandbox Code Playgroud)
或者我只是说疯了,只是有一个列表代表一切会更容易吗?
你可以使用Template Haskell来实现你想要的。这是通过 Haskell 生成 Haskell 代码的强大技术(类似于 lisp 中的宏)。
由于您提到您希望 csv 文件的标头创建自定义数据类型,因此您需要读取该文件,然后在 Template Haskell 中生成数据类型。我见过的最接近您所描述的解决方案是Yesod中的 CRUD 系统。在Hackage上查看他们的持久包。
| 归档时间: |
|
| 查看次数: |
310 次 |
| 最近记录: |