Как скомпилировать и запустить haskell на notepad++

как вы компилируете и запускаете Haskell в notepad++ Я установил плагин NppExec, а затем нажал F6 Я сохранил файл Haskell в C:UsersSamDesktophaskell filesnew 3.hs

Итак, по команде после нажатия F6 Я попытался ввести несколько разных вещей:

C:UsersSamDesktophaskell filesnew 3.hs`
ghc.exe new 3.hs
haskell new

но я получил эти ответы:

C:UsersSamDesktophaskell filesnew 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 ================

каков правильный способ компиляции и выполнения в файле haskell на notepad++?

2 ответов


вам нужно установить NppExec для работы в текущем каталоге, поэтому в плагинах, NppExec, отметьте Follow $(CURRENT_DIRECTORY).

используйте команду ghc new3.hs при нажатии клавиши F6 (без пробелов в именах файлов).

Follow current directory


если вы используете Haskell со стеком, я нашел прекрасный способ быстро запускать вещи с помощью NppExec. Это более простой процесс, чем кажется, и как только вы это сделаете, вам хорошо идти:

Предположим, у вас есть такой файл в файл под названием yourFileName.hs:

main :: IO ()
main = putStrLn "Hello world!"
  1. нажмите F6, чтобы начать NppExec. (См. Примечание 1 ниже.)

  2. вставьте нижнюю часть в окно.

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. Если вы не знаете о $, вы узнаете его, как только он станет частью basic Haskell.

    если у вас нет основной функции в вашем файле, вместо этого используйте :cmd return $ unlines [":l yourFileName"].


Примечание 1: Для удобства, я использовал Settings > ShortCutMapper > Plugin Commands to измените Execute с 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)" и больше ничего не нужно делать. Однако я обнаружил, что консоль занимает намного больше времени для загрузки и запуска файла в этом случае, поэтому метод, который я использую.