Интерактивный Haskell

В некоторых случаях работает только с этой командой, попробуйте.

npm run ng
7
задан namin 4 December 2008 в 22:37
поделиться

5 ответов

Можно определить использование функции, 'позвольте':

$ ghci
Prelude> let double n = n + n
Prelude> double 42
84

Кроме того, я не вполне рекомендую это, так как (A) я записал это и (B) это ужасно не разработано, но Halp может быть удобным в Emacs - это немного похоже на электронную таблицу для кода Haskell, интегрированного прямо в Ваш буфер исходного кода. У Вас может быть ряд выражений, которыми Вы интересуетесь, и с одним нажатием клавиши видят, как все их значения изменяются в зависимости от Ваших редактирований начиная с последней переоценки.

8
ответ дан 6 December 2019 в 15:36
поделиться

Как Вы заметили, GHCi справедливо ограничен в том, что он может сделать,---короткие функции или выражения обо всем, что это легко в командной строке. Для остальных я загружаю модули. Одна из трудностей - то, что у Haskell нет определения перед использованием, таким образом, часто трудно вытащить значимый фрагмент из файла. Я обычно определяю маленькие модули и загрузить и перезагрузить их. Интерактивный опыт определенно не так хорош, как можно было бы понравиться.

3
ответ дан 6 December 2019 в 15:36
поделиться

Режим Haskell для Emacs обеспечивает функции для работы с intepreter. Таким образом, если Вы хотите выполнить некоторую функцию от модуля, который Вы редактируете, можно использовать C-c C-l, чтобы загрузить текущий модуль в ghci (или другой haskell интерактивный) и переключиться, чтобы буферизовать с интерактивным и выполнить некоторые команды там

2
ответ дан 6 December 2019 в 15:36
поделиться

ghci обеспечивает некоторый специальный синтаксис для того, чтобы сделать подобные вещи. Использовать let для функциональных определений. Однако отмечено на FAQ GHC, что это может быть хитро с комплексными функциями, и обычно загружающийся из файла предпочтен. При использовании чего-то как Emacs, который допускает простую интеграцию между исходным файлом и процессом ghci, это становится надуманным вопросом, потому что можно загрузить определения в интерпретатор с нажатием клавиши.

1
ответ дан 6 December 2019 в 15:36
поделиться

С O'Caml и F#, определения проистекают из вершины файла вниз. Однако в Haskell, тип или функция, определяемая ранее в файле могут сослаться на тип или функционировать позже в том файле. Таким образом в Haskell, модуль должен быть скомпилирован внезапно. Интерактивный цикл является несовместимым с компиляцией внезапно.

0
ответ дан 6 December 2019 в 15:36
поделиться