如何在notepad ++上编译和运行haskell

时间:2013-01-19 18:18:52

标签: haskell notepad++ ghc

如何在notepad ++上编译和运行Haskell 我安装了插件NppExec然后按了 F6 我将Haskell文件保存到C:\Users\Sam\Desktop\haskell files\new 3.hs

所以按下 F6 之后的命令,我尝试输入几个不同的东西:

C:\Users\Sam\Desktop\haskell files\new 3.hs`
ghc.exe new 3.hs
haskell new

但我收到了这些回复:

C:\Users\Sam\Desktop\haskell files\new 3.hs
CreateProcess() failed with error code 2:
The system cannot find the file specified.

ghc.exe new 3.hs
Process started >>>
target `new' is not a module name or a source file
<<< Process finished.

haskell new 3
CreateProcess() failed with error code 2:
The system cannot find the file specified.

================ READY ================

在notepad ++上编译和执行haskell文件的正确方法是什么?

2 个答案:

答案 0 :(得分:12)

您需要将NppExec设置为在当前目录中工作,因此在插件中,NppExec,勾选Follow $(CURRENT_DIRECTORY)

按F6键时使用命令ghc new3.hs(文件名中没有空格)。

Follow current directory

答案 1 :(得分:0)

如果您正在使用堆栈的Haskell,我找到了一种使用NppExec快速运行的可爱方法。这是一个比它看起来更简单的过程,一旦你这样做,你就可以去了:

假设您在名为yourFileName.hs的文件中有这样的文件:

main :: IO ()
main = putStrLn "Hello world!"
  1. 按F6开始NppExec。 (见下面的注1)。

  2. 将以下内容粘贴到窗口中。

  3. cd "$(FULL_CURRENT_PATH)"
    stack ghci
    // This is a comment you can delete. Note 2 below.
    

    (见下面的注释3)。

    1. 按下OK按钮后,Notepad ++控制台将运行Haskell解释器。

    2. 现在,再次按F6。将弹出一个警告菜单。

    3. 在菜单中输入以下内容::cmd return $ unlines [":l yourFileName", ":main"],然后按ENTER。该文件将执行。按F6 + ENTER将再次加载并运行该文件。当你下次打开Notepad ++时,它仍然存在。每当您想要使用新文件时,您当然必须更改yourFileName

      说明::cmd return " . . . "允许您将字符串作为多个ghci命令执行,以\n分隔。 unlines获取字符串列表并将其与\n连接起来。如果你不了解$,你很快就会知道它,因为它是基本的Haskell的一部分。

      如果您的文件中没有主要功能,请使用:cmd return $ unlines [":l yourFileName"]

    4. 注1:为方便起见,我使用Settings > ShortCutMapper > Plugin Commands将执行从F6更改为F1。

      注意2:如果您以这种方式运行多种语言(例如Lisp?),那么您可以将// This is a comment...行替换为// :cmd return $ unlines [":l yourFileName", ":main"],这样您就可以在以后切换回Haskell中。

      注3:不是将cd "$(FULL_CURRENT_PATH)" stack ghci粘贴到NppExec窗口中,更简单的方法就是粘贴stack runghc "$(FULL_CURRENT_PATH)",不需要做任何其他事情。但是我发现控制台在这种情况下加载和运行文件需要更长的时间,所以上面的方法就是我使用的。