问题标签 [ml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
16 回答
1620 浏览

haskell - 哪些语言实现了函数式编程的特性?

Lisp 很早就在学术界开发了一组有趣的语言特性,但其中大多数从未在生产环境中流行起来。

一些语言,比如 JavaScript,适应了垃圾收集和词法闭包等基本特性,但所有可能真正改变大规模编写程序方式的东西,比如强大的宏、代码即数据和自定义控制结构,只是似乎在其他函数式语言中传播,这些语言都不适用于非平凡的项目。

函数式编程社区还提出了许多其他有趣的想法(除了函数式编程本身),例如引用透明性、通用大小写表达式(即模式匹配,不像 C/C# 开关那样残缺不全)和柯里化函数,这似乎在常规编程中显然很有用,并且应该很容易与现有的编程实践集成,但由于某种原因似乎永远停留在学术界。

为什么这些功能很难被采用?是否有任何现代实用的语言实际上从 Lisp 中学习,而不是半途而废地复制“一流的功能”,或者是否存在使这不可能的内在冲突?

0 投票
3 回答
1750 浏览

queue - 如何在 SML/NJ 中使用队列库

我看到 SML/NJ 包含一个队列结构。我不知道如何使用它。如何使用 SML/NJ 提供的附加库?

0 投票
3 回答
1783 浏览

haskell - 理解类型错误:“预期签名 Int*Int->Int 但得到 Int*Int->Int”

Steve Yegge关于服务器端 Javascript帖子的评论开始讨论语言中类型系统的优点,该评论描述了:

...来自HM风格系统的示例,您可以在其中获得以下内容:

你能举一个函数定义的例子(或两个?)和一个会产生该错误的函数调用吗?看起来在大型程序中调试可能非常困难。

另外,我可能在Miranda看到过类似的错误吗?(我已经 15 年没用过了,所以我对它的记忆很模糊)

0 投票
2 回答
18412 浏览

ocaml - SML 和 OCaml 有什么区别?

是什么让这两种 ML 方言区分开来?

0 投票
3 回答
378 浏览

ocaml - 在纯函数式 ML 中进行 N 维游走?

这个想法是遍历多个维度,每个维度都定义为一个范围

所以函数类似于fun foo y xfun foo z y x可以应用于整个正方形 X Y 或立方体 X Y*Z。

SML/NJ 不喜欢我在下面的实现:

这是代码:

这种构造甚至可能吗?

欢迎任何指针。

0 投票
3 回答
1189 浏览

ide - 用于在 Windows 上编程 ML 的编辑器?

我知道我可以使用 Emacs,但我之前没有使用过它......还有其他选择吗?

谢谢

0 投票
3 回答
3584 浏览

user-interface - 标准 ML 的 GUI?

出于好奇,我最近开始学习标准 ML。所以我所知道的是它有一个高效的编译器(MLton),它允许我们自由地使用抽象而不用担心性能。

如果我也可以使用标准 ML 进行一些 GUI 编程,那将是完美的。标准 ML 是否有类似 Gtk、Qt 或 WxWidgets 的绑定?

非常感谢你。

0 投票
6 回答
4064 浏览

functional-programming - 标准机器学习入门

我正在寻找某种“面向初学者的机器学习”指南——到目前为止,谷歌已经引导我找到一些晦涩难懂的邮件列表或无法理解的文本。

问题是,到目前为止,我的函数式编程经验为零,并且围绕这些概念展开思考比预期的要困难得多。例如,我现在要做的任务(是的,大学:))是在两个列表(a,b)和(c,d)之间进行映射,因此结果是(a,d)的列表) 来自 b = c 的对。

我通常会做的是:

但是,我什至无法开始在 SML 中实现类似的东西。例如,我知道我可以用嵌套map f list的 's 遍历列表。但是,运行时 (SML/NJ) 只接受仅将列表元素作为参数的函数。但是,如果我一次只能对两个列表之一进行操作,我怎么知道要返回哪些元素呢?

我迫切需要一种可以解决这种事情的资源,最好是带有友好的大字母和大量代码示例:/

0 投票
2 回答
413 浏览

ml - 这个标准 ML 代码究竟做了什么?

我正在阅读 Chris Okasaki 的纯函数式数据结构,我遇到了一个问题。它位于这里。特别是,我不明白rotateandexec函数是如何工作的:

有人可以用愚蠢的人的话来形容吗?我仍在学习基于 ML 的语言。:-)

0 投票
2 回答
1862 浏览

haskell - 推断类型似乎检测到无限循环,但到底发生了什么?

在 Andrew Koenig 的关于 ML 类型推断的轶事中,作者使用归并排序的实现作为 ML 的学习练习,并且很高兴发现“不正确”的类型推断。

令我惊讶的是,编译器报告了一种

换句话说,这个排序函数接受任何类型的列表并返回一个整数列表。

那是不可能的。输出必须是输入的排列;它怎么可能有不同的类型?读者肯定会发现我的第一个冲动很熟悉:我想知道我是否在编译器中发现了一个错误!

再想一想,我意识到还有另一种方法可以让函数忽略它的参数:也许它有时根本不返回。事实上,当我尝试它时,这正是发生的事情:sort(nil)确实 return nil,但是对任何非空列表进行排序都会进入无限递归循环。

翻译成 Haskell 时

GHC 推断出类似的类型:

Damas-Hindley-Milner 算法如何推断这种类型?