我发现这polyml
是可以在 Ubuntu 上轻松安装的 ML 实现(在存储库中命名为 polyml,可以使用 执行poly
)。我正在关注 Andrew Cumming 的A Gentle Introduction to ML。经过几分钟的polyml
解释器实验后,我发现它不支持 readline (按向上箭头键会产生^[[A)。
对于口译员来说,这似乎不正常。仅当我没有安装 readline 时才会发生这种情况,但我的 Python 解释器的行为并非如此。
将 readline 支持添加到本机不支持它的终端程序的最简单方法是使用rlwrap
. 您可以通过多个包管理器安装同名包。↑在下面的例子中按下:
$ poly
Poly/ML 5.7.1 Release
- ^[[A
你可以像这样运行它:
$ rlwrap poly
Poly/ML 5.7.1 Release
- stuff I typed from last session;
或者您可以在您的~/.bashrc
或类似的中添加别名:
alias poly='rlwrap poly'
以下两个 QA 回答了您的问题,尽管是针对 sml/nj。polyml 应该没有什么不同
如果您对标准 ML 和 Poly/ML 感兴趣,您还应该看看 Isabelle/ML。Isabelle 主要针对定理证明环境,但也可以用作 ML 系统——如果您不介意 300 MB 下载和 600-800 MB 磁盘占用空间来获得完整的 IDE。
ML 片段可以在现场编译和评估,方法是将它们嵌入到 Isabelle 理论源中,如下所示:
theory Scratch
imports Main
begin
ML {*
fun f x = x + 1
*}
end
在 Isabelle/jEdit 中,这提供了关于推断类型等的工具提示——不仅readline
对学习 SML 有用,而且对学习很有用。