Невозможно ввести многострочные операторы в GHCI

let x=1
    y=2
    z=3

не работает в GHCi, вынуждая меня использовать вместо этого let {x=1;y=2;y=3}. Как я могу решить эту проблему?


person ThePiercingPrince    schedule 10.08.2013    source источник


Ответы (1)


В В документации говорится:

GHCi также имеет многострочный режим, активируемый :set +m, в котором GHCi автоматически определяет, когда текущий оператор не завершен, и позволяет добавлять дополнительные строки. Многострочный ввод завершается пустой строкой.

Многострочный режим заставляет GHCi вести себя так же, как, например. интерпретатор Python:

Prelude> :set +m
Prelude> let x = 1
Prelude|     y = 2
Prelude|     z = 3
Prelude|
Prelude> (x, y, z)
(1,2,3)

Этот скрытый драгоценный камень прекрасно подходит для игры с читаемым кодом!

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

person kqr    schedule 10.08.2013