小编Com*_*Two的帖子

从 Python 生成并运行 Haskell 代码

我们正在编写一个 python 程序,试图合成一个(简单的)haskell 函数给定的输入-输出对。在程序的整个运行过程中,我们生成 haskell 代码并根据用户提供的示例检查其正确性。假设我们得到输入“1 2”和预期输出“3”。我们会(最终)提出加号功能。然后我们将(\x y -> x + y) 1 2在 haskell 中运行 并检查它的计算结果是否为 3。

我们目前做事的方式是运行以下 python 代码:

from subprocess import Popen, PIPE, STDOUT
proccess = Popen(f'ghc -e "{haskell_code}"', shell=True, stdout=PIPE, stderr=STDOUT) 
haskell_output = proc.stdout.read().decode('utf-8').strip('\n')
Run Code Online (Sandbox Code Playgroud)

由于我们都不熟悉 ghc、haskell、流程或任何与此相关的任何事情,我们希望有人可以帮助我们以(更)更有效的方式执行此任务,因为这目前非常慢。

此外,我们希望能够执行多个语句。例如,我们想导入 Data.Char 以便我们的函数可以使用“toUpper”。然而,我们目前这样做的方式是发送一个 lambda 函数和附加到它的输入,我们不确定如何在上面添加导入语句(添加“\n”似乎不起作用)。

总而言之,我们想要最快的(运行时)解决方案,它允许我们从 python 测试 haskell 函数(我们没有提前或在某个时间点的所有 haskell 函数的代码,而是在生成时进行测试)代码),同时允许我们使用多个语句(例如,导入)。

抱歉,如果其中任何一个是微不足道的或愚蠢的,任何帮助将不胜感激。

python haskell ghc ghci

3
推荐指数
1
解决办法
802
查看次数

标签 统计

ghc ×1

ghci ×1

haskell ×1

python ×1