【问题标题】:How to add readline support in polyml interpreter?如何在 polyml 解释器中添加 readline 支持?
【发布时间】:2013-07-30 04:10:34
【问题描述】:

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

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

【问题讨论】:

  • sml/nj 也应该像 mlton 一样在 ubuntu 下作为包“smlnj”提供(尽管“只是”一个完整的程序编译器)。

标签: linux ubuntu sml ml polyml


【解决方案1】:

将 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'

【讨论】:

    【解决方案2】:

    如果您对标准 ML 和 Poly/ML 感兴趣,还应该看看 Isabelle/ML。 Isabelle 主要用于定理证明环境,但也可以用作 ML 系统——如果您不介意 300 MB 下载和 600-800 MB 磁盘空间来获得完整的 IDE。

    ML sn-ps 可以在现场编译和评估,通过将它们嵌入到 Isabelle 理论源中,如下所示:

    theory Scratch
    imports Main
    begin
    
    ML {*
      fun f x = x + 1
    *}
    
    end
    

    在 Isabelle/jEdit 中,这提供了关于推断类型等的工具提示——不仅仅是readline,但对学习 SML 很有用。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2021-02-01
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 2020-02-17
        • 2018-07-08
        • 2012-10-26
        • 2014-04-16
        • 1970-01-01
        相关资源
        最近更新 更多