首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标准ML入门

标准ML入门
EN

Stack Overflow用户
提问于 2009-11-09 04:15:20
回答 6查看 4K关注 0票数 5

我正在寻找某种"ML初学者“指南--到目前为止,谷歌已经引导我找到了一些晦涩难懂的邮件列表或令人费解的文本。

问题是,到目前为止,我没有任何函数式编程经验,而且对概念的理解比预期的要困难得多。例如,我现在要做的任务(是的,大学:)是在两个列表(a,b)和( c,d)之间进行映射,这样结果就是一个来自b=c的(a,d)对的列表。

我通常会做的是:

代码语言:javascript
复制
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)只接受只将列表元素作为参数的函数。但是如果我一次只能操作两个列表中的一个,我如何知道返回哪些元素?

我非常需要一个资源来处理这类事情,最好是用友好的大字母和大量的代码示例:/

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 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)

票数 5
EN

Stack Overflow用户

发布于 2010-07-09 22:34:44

由芝加哥大学罗伯特·哈珀教授撰写的Programming in Standard ML

票数 8
EN

Stack Overflow用户

发布于 2009-11-09 04:34:42

对于您提到的练习,考虑一个返回新列表而不是修改现有列表的函数add,并考虑如何用您最喜欢的高级语言递归地实现该练习,这将是第一步。

您不需要使用map或任何其他现有的高阶ML函数!这些只是有经验的程序员的捷径。仅使用模式匹配和递归。但是,如果您寻找使用良好的递归和模式匹配的示例,则可以查看map等函数的实现。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1697782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档