runghc/runhaskell позволяет запускать программы Haskell с помощью интерпретатора, вместо необходимости их предварительной компиляции.
4.1. Использование
Командная строка runghc выглядит следующим образом:
runghc [runghc flags] [GHC flags] module [program args]
Любые флаги, не распознаваемые runghc, автоматически передаются в GHC. Если флаг распознаётся как runghc, так и GHC, но вы хотите передать его GHC, то вы можете поместить его после разделителя --. Флаги после разделителя обрабатываются как флаги только для GHC. В качестве альтернативы, можно использовать опцию runghc --ghc-arg=<arg> для прямой передачи флагов или аргументов в GHC.
module может быть именем файла Haskell-исходника с расширением или без него. Если по какой-либо причине имя файла начинается с -, вы можете использовать второй -- для обозначения конца флагов. Всё, что следует за вторым --, будет рассматриваться как имя файла программы или модуля, за которым следуют его аргументы. Например:
runghc -- -- -hello.hs
4.2. Флаги runghc
runghc принимает следующие флаги:
-
-f /path/to/ghc: указывает runghc путь к исполняемому файлу GHC для запуска программы. По умолчанию runghc будет искать GHC в каталогах системного пути поиска. -
--ghc-arg=<arg>: Передать опцию или аргумент в GHC -
--help: выводит информацию об использовании. -
--version: выводит информацию о версии.
4.3. Флаги GHC
Как обсуждалось ранее, используйте -- или --ghc-arg=<arg> для различения флагов GHC при необходимости. Например, -f распознаётся runghc, поэтому для передачи -fliberate-case в GHC используйте любой из следующих вариантов:
runghc -- -fliberate-caserunghc --ghc-arg=-fliberate-case
Обратите внимание, что любые аргументы, не являющиеся флагами, никогда не передаются в GHC. Неиспользованный аргумент, не являющийся флагом, будет рассматриваться как имя запускаемой программы. Если флаг GHC принимает аргумент, используйте --ghc-arg=<arg> для передачи аргумента в GHC. Например, если вы хотите передать -package foo в GHC, используйте любой из следующих вариантов:
runghc -package --ghc-arg=foo Main.hsrunghc --ghc-arg=-package --ghc-arg=foo Main.hs