7

我发现这polyml是可以在 Ubuntu 上轻松安装的 ML 实现(在存储库中命名为 polyml,可以使用 执行poly。我正在关注 Andrew Cumming 的A Gentle Introduction to ML。经过几分钟的polyml解释器实验后,我发现它不支持 readline (按向上箭头键会产生^[[A

对于口译员来说,这似乎不正常。仅当我没有安装 readline 时才会发生这种情况,但我的 Python 解释器的行为并非如此。

4

3 回答 3

11

将 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'
于 2013-08-04T13:49:44.823 回答
3

以下两个 QA 回答了您的问题,尽管是针对 sml/nj。polyml 应该没有什么不同

于 2013-07-30T07:01:33.127 回答
1

如果您对标准 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 有用,而且对学习很有用。

于 2013-10-08T18:26:42.707 回答