Командная строка GHCI против Prelude в Haskell

Я пытаюсь изучить Haskell с самого начала, и мне было интересно, в чем именно разница между двумя подсказками (Haskell и Prelude), которые в нем используются. Это может показаться очень наивным вопросом, не говоря уже о том, что я пытался найти ответ, прежде чем публиковать этот вопрос, но не смог найти его (правильный). Заранее спасибо.


person Yogesh D    schedule 03.02.2016    source источник


Ответы (1)


Хорошо, если я правильно понимаю, вам интересно, есть ли разница между

Prelude> 

и

ghci>

как подсказки после того, как вы вызвали GHCi из командной строки.

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

:set prompt "aglebargle> "

Вы можете заменить arglebargle> чем угодно.

Основное преимущество приглашения Prelude>, которое я вижу, заключается в том, что оно будет обновляться при импорте модулей. Prelude — это единственный модуль, который у вас есть без импорта, поэтому это подсказка. Например, если вы, скажем, сделали import Control.Monad, вы получите Prelude Control.Monad> в качестве подсказки.

person the spectre    schedule 03.02.2016
comment
Спасибо за ваш ответ. Но, читая о Haskell, я наткнулся на утверждение во вводной главе: Подсказка здесь Prelude›, но поскольку она может стать длиннее, когда вы загружаете что-то в сеанс, мы собираемся использовать ghci›. Влияет ли использование приглашения ghci вместо prelude на время загрузки? - person Yogesh D; 03.02.2016
comment
Подсказка носит только информационный/эстетический характер; это не влияет на время загрузки, но может занять довольно много времени и занять большую часть строки, если вы находитесь в узком окне. Единственная потеря при переходе на фиксированную подсказку заключается в том, что вам придется помнить, какие пакеты были импортированы, вместо того, чтобы просматривать их в подсказке. - person Levi Pearson; 03.02.2016
comment
Если вы хотите знать, какие вещи вы импортировали, но при этом сделать подсказку короткой, попробуйте импортировать как. То есть import Control.Monad as CM даст вам подсказку, похожую на Prelude CM> . (Вам также не нужно использовать CM.function, потому что у вас нет import qualified.) - person the spectre; 03.02.2016