我正在寻找某种"ML初学者“指南--到目前为止,谷歌已经引导我找到了一些晦涩难懂的邮件列表或令人费解的文本。
问题是,到目前为止,我没有任何函数式编程经验,而且对概念的理解比预期的要困难得多。例如,我现在要做的任务(是的,大学:)是在两个列表(a,b)和( c,d)之间进行映射,这样结果就是一个来自b=c的(a,d)对的列表。
我通常会做的是:
result = []
for each x in list1 do
for each y in list2 do
if x.b == y.c result.add (x.a, y.d)
end
end但是,我甚至不能开始在SML中实现这样的东西。例如,我知道我可以使用嵌套的map f list遍历列表。但是,运行时(SML/NJ)只接受只将列表元素作为参数的函数。但是如果我一次只能操作两个列表中的一个,我如何知道返回哪些元素?
我非常需要一个资源来处理这类事情,最好是用友好的大字母和大量的代码示例:/
发布于 2009-11-09 04:26:51
我有一些SML资源的书签:
Programming in Standard ML '97: An On-line Tutorial
Elementary Standard ML (亚马逊Kindle)
Elements of ML Programming (amazon.com)
发布于 2010-07-09 22:34:44
由芝加哥大学罗伯特·哈珀教授撰写的Programming in Standard ML
发布于 2009-11-09 04:34:42
对于您提到的练习,考虑一个返回新列表而不是修改现有列表的函数add,并考虑如何用您最喜欢的高级语言递归地实现该练习,这将是第一步。
您不需要使用map或任何其他现有的高阶ML函数!这些只是有经验的程序员的捷径。仅使用模式匹配和递归。但是,如果您寻找使用良好的递归和模式匹配的示例,则可以查看map等函数的实现。
https://stackoverflow.com/questions/1697782
复制相似问题