WedX - журнал о программировании и компьютерных науках

Как запустить файл Haskell в интерпретируемом режиме

Мне сказали, что вы можете интерпретировать файлы Haskell (что, как я полагаю, означает, что они будут работать как Ruby / Python / Perl). Однако я не могу найти параметр командной строки в GHC для этого. Он всегда хочет скомпилировать мой файл. Смотрел и на GHCi, но он всегда выдает мне ответ.

Я в основном хочу просто сделать ghc -i MyFile.hs (где -i - это выдуманный флаг, который, как я представляю, коррелирует с интерпретируемым режимом) и запустить его, чтобы я мог быстро получить обратную связь, пока я пробую идеи и учусь.


  • В ghci есть что нравится: с его помощью очень легко тестировать небольшие части вашей программы. Лично у меня есть привычка использовать ghci для тестирования. Вы по-прежнему можете запустить действие верхнего уровня main, набрав main (или используя :main, если вам нужно передать ему аргументы командной строки). 30.12.2011

Ответы:


1
$ runhaskell MyFile.hs

Или runghc (это одно и то же). ghci MyFile.hs также запустит интерактивный сеанс REPL с загруженным MyFile.hs, но если вы хотите запустить основную программу, то подходящим вариантом будет runhaskell.

Вероятно, будет хорошей идеей выработать привычку тестировать части вашей программы в виде отдельных модулей в GHCi, а не запускать все это каждый раз целиком, но очевидно, что для более коротких сценариев проще и легче всего просто запускать все это целиком.

30.12.2011
  • По какой-то причине (платформа haskell на OSX) runhaskell не на моем пути, а runghc был. (так что +1 за упоминание runghc) 04.05.2015
  • Я знаю, что эта ветка уже давно закрыта, но скомпилирован ли jit интерпретатора runhaskell? 23.09.2015

  • 2

    У вас может быть такой сценарий:

    #!/usr/bin/env runhaskell
    main = putStrLn "hello world"
    

    Сделав файл исполняемым (т.е. chmod +x haskell_script), вы можете запустить его, как любой другой сценарий оболочки.

    30.12.2011
  • Не совсем как любой другой сценарий оболочки. Возвращаемое значение последнего выполненного выражения, если не (), автоматически выводится runhaskell, как и в GHCi. Этого не происходит с реальным исполняемым файлом, обычно скомпилированным с ghc. 29.11.2012
  • @MarkReed Не могли бы вы привести пример? 24.01.2015
  • Я мог бы придумать искусственный, но мне было бы трудно это сделать. На самом деле это не практическая проблема, так как вы все равно захотите, чтобы большинство скриптов выполняли какой-то ввод-вывод в качестве своего последнего действия. Я просто подумал, что это стоит отметить. 24.01.2015

  • 3

    Откройте интерпретатор GHC, запустив ghci в терминале, а затем загрузите файл, набрав :load example.hs. Более подробная информация представлена ​​по этой ссылке.

    30.12.2011

    4

    Чтобы запустить код, записанный в файле, скажем myfile.txt, содержащий простые строки кода, которые работают в интерпретаторе GHC, например:

    let a = 0 in a:[1,2]
    let x = [1,2] in x ++ [3,4]
    

    ты можешь сделать:

    ghc -e ':script myfile.txt'
    

    Редактировать

    В Windows необходимы двойные кавычки:

    ghc -e ":script myfile.txt"
    

    Вместо этого можно также открыть GHCi и выполнить :script myfile.txt.

    19.07.2016
    Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]