如何解决从CSV构造数据类型实例
| 我有CSV数据(继承-这里没有选择),我需要使用它在Haskell中创建数据类型实例。解析CSV没问题-教程和API比比皆是。 这是“显示”为我简化的精简测试用例生成的内容:JField {fname = \"cardNo\",ftype = \"str\"} (string representation)
我能够进行读取,以将该字符串转换为JField数据记录。我的CSV数据只是这些字段的值,因此与上述JField对应的CSV行是:
cardNo,str
我正在以字符串[\“ cardNo \”,\“ str \”]的列表形式阅读它们
因此-暴力破解\“字符串表示\”的确切格式很容易(但是在Haskell中编写Java或python风格的字符串格式并不是我的目标)。
我想做这样的事情(第一个列表是静态的,第二个列表是读取的文件CSV):
let stp1 = zip [\"fname = \",\"ftype =\"] [\"cardNo\",\"str\"]
导致
[(\"fname = \",\"cardNo\"),(\"ftype =\",\"str\")]
然后将元组连接-显式地使用++或以更聪明的方式来确定。
这是我在教程之外的第一段简单代码,因此我想知道这是否似乎是一种合理的Haskellian方法,或者显然还有什么更好的方法可以构建此代码:
fname = \“ cardNo \”,ftype = \“ str \”
不要期待解决方案(这不是功课,这是一种学习练习),而是对更好方法的批评或指导。蛮力逼制很容易,但是会破坏我的目标,那就是学习
解决方法
我可能已经走了,但是这里的4英镑会更好吗?我想我假设您以每行5英镑的价格读取文件,即
field11,field12
field21,field22
等等
你可以写
map (\\[x,y] -> JField {fname = x,ftype = y}) data
data
是您的输入。我认为可以做到。
,如果已经具有fname字段的值(例如,在变量fn
中)和ftype字段的值(在ft
中),则只需执行JField {fname=fn,ftype=ft}
。对于非字符串字段,只需在适当的地方插入一个“ 12”即可。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。