【问题标题】:Haskell multiline interactive modeHaskell 多行交互模式
【发布时间】:2013-12-03 22:05:59
【问题描述】:

在 python 中,有很多 IDE 可以让你做到这一点。

>>> if (a==5):
      print "Yes"
else:
      print "No"

但在 haskell 的 GHCi 中:

Prelude> do

<interactive>:2:1: Empty 'do' block

它不起作用。是否有任何 IDE 可以让您在交互模式下执行多行命令。

注意:我知道 :{ 和 :} 命令,但输入它们后您将无法编辑上面的行。

【问题讨论】:

  • AFAIK 您在 IPython 中输入后也无法编辑上面的行。它与 IPython 的 readline 功能基本相同,只是你必须手动启动它
  • 是的,但我还没有找到任何可以做到的haskell ide。 Python的IDLE可以。
  • 首先,我不认为 IDLE 是一个 IDE。其次,很少有人真正将 IDLE 用于重要的 Python 开发。大多数人会使用 IPython,它是一个巨大的、很棒的功能集。与 GHCi 一样,IPython 是一个 REPL,但 IDLE 不是。 IDLE 是使用称为 Tkinter 的 GUI 工具包构建的,因此理论上可以为 Haskell 编写类似的东西,但据我所知,没有人这样做过。您不会在 REPL 中轻松获得该功能。

标签: haskell ide ghci


【解决方案1】:

输入

Prelude> :set +m
Prelude> do
Prelude|   x <- getLine
Prelude|   putStrLn $ "yay: " ++ x
Prelude|
hi!
yay: hi!

:set +m 部分支持多行输入,就像在 Python 中一样。这就像:{ :} 一样工作,所以你也不能在那里编辑上线。如果您想这样做,我建议改为写入文件并将其加载到解释器中。 (这可以通过正确的VimEmacs 设置快速完成。)

如果您不熟悉命令行编辑器,您可能可以查看一些实际的 Haskell IDE。我知道FP Complete 有一个基于网络的免费教育用途。 building IDEs in Haskell 也有一些尝试。

【讨论】:

    【解决方案2】:

    试试 ihaskell,https://github.com/gibiansky/IHaskell,它是 ipython 的 Haskell 内核。这是一个年轻的项目,还没有被黑客入侵。告诉我们进展如何!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-27
      • 1970-01-01
      • 2020-12-08
      • 2017-06-05
      • 1970-01-01
      • 2013-04-16
      相关资源
      最近更新 更多