【发布时间】:2011-04-08 20:06:02
【问题描述】:
关于将 SML 代码转换为 Haskell 的几个基本问题。
1) 我习惯于在 SML 代码中嵌入本地表达式,例如测试表达式、打印等,这些表达式在加载(评估)代码时执行本地测试和输出。
在 Haskell 中,似乎获得结果(评估)的唯一方法是在一个模块中添加代码,然后在另一个模块中转到 main 并添加一些东西来调用和打印结果。
这是对的吗?在 GHCi 中,我可以输入表达式并查看结果,但这可以自动化吗? 每次测试评估都必须进入顶级 main 对我来说似乎很不方便 - 也许只需要改变我的懒惰范式。
2) 在 SML 中,我可以对返回的结果进行模式匹配和统一,例如
val myTag(x) = somefunct(a,b,c);
并在匹配后获取 x 的值。
我可以在 Haskell 中轻松地做类似的事情,而无需编写单独的提取函数吗?
3) 如何使用元组参数进行构造函数,即 uncurried。
在 SML 中:
数据类型事物 = Int * Int 的信息;
但在 Haskell 中,我尝试过;
数据事物 = 信息 (Int Int)
失败了。 (“Int 应用于类型中的参数过多:A few Int Int”) 咖喱版效果很好,
数据事物 = Info Int Int
但我想要不咖喱。
谢谢。
【问题讨论】: