我如何在 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
。
我正在对我认为具有 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
。