runghc 非常慢(打印数组需要 17-33 秒)

Sch*_*sam 4 haskell ghc

在我的大学,我目前有一个关于 Haskell 的讲座。现在我找到了一份制作程序的工作。我们得到了这个示例文件: https ://pastebin.com/6wPdEgHZ

从那时起,我们必须围绕它开发程序。这些函数模拟数据库访问。

由于我不喜欢在 WinHugs 中编程,因此我使用 GHC 设置了 Visual Studio Code。我添加了一个 main-Function 来打印 Function-Outputs。它看起来像这样:

module Main where

main :: IO ()
main = print artikel
Run Code Online (Sandbox Code Playgroud)

我将其添加到顶部。就是这样。起初我想输出文章。这是 runghc 输出:

[Running] runghc "c:\Users\5CG949285X\Documents\DHBW\5_Semester\Funktionale Programmierung\restaurant.hs"
[(1,"Hamburger","Hauptgericht",8.0,6.0),(2,"Cheeseburger","Hauptgericht",9.0,6.5),(3,"Chickenburger","Hauptgericht",8.5,6.5),(4,"Pommes frites","Beilage",3.0,2.0),(5,"Wedges","Beilage",3.5,2.0),(6,"Cola","Getraenk",2.5,1.0),(7,"Eistee","Getraenk",2.0,1.0),(8,"Wasser","Getraenk",1.5,0.5)]

[Done] exited with code=0 in 24.527 seconds

[Running] runghc "c:\Users\5CG949285X\Documents\DHBW\5_Semester\Funktionale Programmierung\restaurant.hs"
[(1,"Hamburger","Hauptgericht",8.0,6.0),(2,"Cheeseburger","Hauptgericht",9.0,6.5),(3,"Chickenburger","Hauptgericht",8.5,6.5),(4,"Pommes frites","Beilage",3.0,2.0),(5,"Wedges","Beilage",3.5,2.0),(6,"Cola","Getraenk",2.5,1.0),(7,"Eistee","Getraenk",2.0,1.0),(8,"Wasser","Getraenk",1.5,0.5)]

[Done] exited with code=0 in 30.182 seconds
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,这需要很长时间。仅仅是因为文件中有太多代码吗?还是我设置时做错了什么?

Sch*_*sam 5

如果我让文件保持原样,只需将其放在module Restaurant where顶部并在同一目录中添加第二个文件,名为“Main.hs”,如下所示:

module Main where

import Restaurant

main :: IO ()
main = print artikel
Run Code Online (Sandbox Code Playgroud)

它运行得更快。

如果我运行 Main.hs 它看起来像这样:

[Running] runghc "c:\Users\5CG949285X\Documents\DHBW\5_Semester\Funktionale Programmierung\Main.hs"
[(1,"Hamburger","Hauptgericht",8.0,6.0),(2,"Cheeseburger","Hauptgericht",9.0,6.5),(3,"Chickenburger","Hauptgericht",8.5,6.5),(4,"Pommes frites","Beilage",3.0,2.0),(5,"Wedges","Beilage",3.5,2.0),(6,"Cola","Getraenk",2.5,1.0),(7,"Eistee","Getraenk",2.0,1.0),(8,"Wasser","Getraenk",1.5,0.5)]

[Done] exited with code=0 in 0.473 seconds

[Running] runghc "c:\Users\5CG949285X\Documents\DHBW\5_Semester\Funktionale Programmierung\Main.hs"
[(1,"Hamburger","Hauptgericht",8.0,6.0),(2,"Cheeseburger","Hauptgericht",9.0,6.5),(3,"Chickenburger","Hauptgericht",8.5,6.5),(4,"Pommes frites","Beilage",3.0,2.0),(5,"Wedges","Beilage",3.5,2.0),(6,"Cola","Getraenk",2.5,1.0),(7,"Eistee","Getraenk",2.0,1.0),(8,"Wasser","Getraenk",1.5,0.5)]

[Done] exited with code=0 in 0.434 seconds

[Running] runghc "c:\Users\5CG949285X\Documents\DHBW\5_Semester\Funktionale Programmierung\Main.hs"
[(1,"Hamburger","Hauptgericht",8.0,6.0),(2,"Cheeseburger","Hauptgericht",9.0,6.5),(3,"Chickenburger","Hauptgericht",8.5,6.5),(4,"Pommes frites","Beilage",3.0,2.0),(5,"Wedges","Beilage",3.5,2.0),(6,"Cola","Getraenk",2.5,1.0),(7,"Eistee","Getraenk",2.0,1.0),(8,"Wasser","Getraenk",1.5,0.5)]

[Done] exited with code=0 in 0.487 seconds
Run Code Online (Sandbox Code Playgroud)

速度快得多,而且实际上可以使用。最后,要求只是提供一个可在 WinHugs 中运行的单个 .hs 文件。所以我想我现在会继续在 Main.hs 中工作,并在完成后将其合并回原始文件。应该管用。

谢谢@大家