如何在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文件的正确方法是什么?
答案 0 :(得分:12)
您需要将NppExec设置为在当前目录中工作,因此在插件中,NppExec,勾选Follow $(CURRENT_DIRECTORY)
。
按F6键时使用命令ghc new3.hs
(文件名中没有空格)。
答案 1 :(得分:0)
如果您正在使用堆栈的Haskell,我找到了一种使用NppExec快速运行的可爱方法。这是一个比它看起来更简单的过程,一旦你这样做,你就可以去了:
假设您在名为yourFileName.hs
的文件中有这样的文件:
main :: IO ()
main = putStrLn "Hello world!"
按F6开始NppExec。 (见下面的注1)。
将以下内容粘贴到窗口中。
cd "$(FULL_CURRENT_PATH)"
stack ghci
// This is a comment you can delete. Note 2 below.
(见下面的注释3)。
按下OK按钮后,Notepad ++控制台将运行Haskell解释器。
现在,再次按F6。将弹出一个警告菜单。
在菜单中输入以下内容::cmd return $ unlines [":l yourFileName", ":main"]
,然后按ENTER。该文件将执行。按F6 + ENTER将再次加载并运行该文件。当你下次打开Notepad ++时,它仍然存在。每当您想要使用新文件时,您当然必须更改yourFileName
。
说明::cmd return " . . . "
允许您将字符串作为多个ghci命令执行,以\n
分隔。 unlines
获取字符串列表并将其与\n
连接起来。如果你不了解$
,你很快就会知道它,因为它是基本的Haskell的一部分。
如果您的文件中没有主要功能,请使用:cmd return $ unlines [":l yourFileName"]
。
注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)"
,不需要做任何其他事情。但是我发现控制台在这种情况下加载和运行文件需要更长的时间,所以上面的方法就是我使用的。