【发布时间】:2014-08-22 02:55:53
【问题描述】:
我正在尝试使用 Haskell 执行一些类似 SQL 的操作,但我不知道要使用什么数据结构。我有 3 个不同的表:客户、销售和订单。架构如下:
客户
-
custid— 整数(主键) -
name— 字符串
例子:
1|Samson Bowman
2|Zelda Graves
3|Noah Hensley
4|Noelle Haynes
5|Paloma Deleon
销售
-
orderid— 整数(主键) -
custid— 整数 -
date— 字符串
例子:
1|3|20/3/2014
2|4|25/4/2014
3|5|17/7/2014
4|9|5/1/2014
5|5|9/6/2014
订单
-
orderid— 整数 -
item— 字符串
例子:
2|gum
4|sandals
3|pen
1|gum
2|pen
3|chips
1|pop
5|chips
我要做的是将这三个表“合并”成一个新表,新表的架构是:
Customername Order# Date Items
Samson Bowman 17 20/3/2014 shoes, socks, milk
Samson Bowman 34 19/5/2014 gum, sandals, butter, pens, pencils
Paloma Deleon 41 6/1/2014 computer
…
是的,它非常类似于 SQL。我知道 SQL 很简单,但是如果没有 SQL 而是使用内置数据结构,我该如何实现呢?
文本打印错误 当我运行该函数时,它显示以下错误:
Couldn't match type `[Char]' with `Char'
Expected type: Customer -> String
Actual type: Customer -> [String]
In the first argument of `map', namely `formatCustomer'
In the second argument of `($)', namely `map formatCustomer result'
我认为 condense 的返回类型是 [Customer],但 formatCustomer 仅使用 Customer。是这个原因吗?
【问题讨论】:
-
我曾经写过这篇关于使用箭头进行类似 SQL 的列表处理的文章:groups.google.com/forum/#!msg/haskell-cafe/vLgYxvVP2mM/…
-
但是map只对两个元素的元组起作用,在saleDB中,我们有三个元素,如何处理呢?谢谢
-
我建议您阅读 Yesod 书中的 persistent 章节。
-
它不是 SQL 应用程序。所有数据都存储在简单的 txt 文件中。所以我想用简单的数据结构来收集它们,让它变得简单:)