2013-12-03 4 views
0

В python существует множество IDE, которые позволяют вам это делать.Многострочный интерактивный режим Haskell

>>> if (a==5): 
     print "Yes" 
else: 
     print "No" 

Но в GHCi Хаскеля:

Prelude> do 

<interactive>:2:1: Empty 'do' block 

Это не работает. Есть ли IDE, который позволяет вам выполнять многострочные команды в интерактивном режиме.

Примечание: Я знаю о командах: {и:}, но вы не можете редактировать верхние строки после их ввода.

+1

AFAIK вы не можете редактировать верхние строки после ввода их в IPython. Это по сути то же самое, что и функции readline для IPython, за исключением того, что вы должны вручную запустить его. – bheklilr

+0

Да, но я не нашел никакого haskell ide, который может это сделать. ИДЕТ Python может. – PyRulez

+0

Прежде всего, я бы не рассматривал IDLE как IDE. Во-вторых, мало кто на самом деле использует IDLE для значительного развития python. Большинство будет использовать IPython, и это огромный, удивительный набор функций. Как и GHCi, IPython является REPL, но IDLE - нет. IDLE построен с использованием инструментария GUI под названием Tkinter, поэтому теоретически можно написать что-то подобное для Haskell, но, насколько мне известно, никто не имеет. Вы не получите эту функциональность очень легко в REPL. – bheklilr

ответ

5

Введите

Prelude> :set +m 
Prelude> do 
Prelude| x <- getLine 
Prelude| putStrLn $ "yay: " ++ x 
Prelude| 
hi! 
yay: hi! 

:set +m часть позволяет ввод нескольких строк, как в Python. Это работает как :{:}, хотя вы также не сможете редактировать верхние строки. Если вы хотите это сделать, я рекомендую писать в файле и загружать его в интерпретаторе. (Это можно сделать очень быстро с правильной настройкой .)

Если вы не в редакторе командной строки, вы можете, вероятно, посмотреть на некоторые из реальных IDE Haskell. Я знаю, что FP Complete имеет веб-сайт, бесплатный для образовательных целей. Были некоторые попытки в building IDEs in Haskell.

2

Попробуйте ihaskell, https://github.com/gibiansky/IHaskell, который является ядром Haskell для ipython. Это молодой проект, а не взлом. Дайте нам знать, как это происходит!

Смежные вопросы