我如何在 GHCi 中 运行 多个语句?

How can I run multiple statements in GHCi?

我正在对我认为具有 O(n)(平方) 性能(或更差)的简单函数进行一些非常简单的性能测试。

目前我正在运行宁多条语句,重复起来很乏味:

ghci> myfunction 0 100
true
ghci> myfunciton 0 200
true
ghci> myfunction 0 300
true
ghci> :r

有没有办法 运行 所有四个 GHCi 语句?我不能只使用 "native" Haskell 来组合它们,因为我想包含 :r (这是一个 GHCi 语句 - 不完全是 Haskell)得到 运行 最后。

我发现的一种方法是创建一个单独的文件:

myfunction 0 100
myfunction 0 200
myfunction 0 300
:r

然后使用:

:script path/to/file

一种方法是在您的 Cabal 文件中创建一个测试套件,将您的函数调用作为测试放置在其中,然后使用 stack test --file-watch。每次保存文件时都会重新编译并重新运行测试。

您可以使用 :def 以这种方式定义自定义 GHCi 命令:

> :def foo (\_ -> return "print 100\nprint 200\n:t length")
> :foo
100
200
length :: Foldable t => t a -> Int

在返回的字符串中,也可以包含:-命令,如上面的:t