Під час вивчання Haskell, та й, мабуть, під час роботи з ним, часто використовується інтерпретатор. На жаль, за замовчуванням він не дуже зручний, але частково ми можемо виправити це простими налаштуваннями.
Всі налаштування робляться через його команду :set. До прикладу, часто може знадобитися переглядати типи функцій, чи їхніх значень після виконання. Робиться це командою :type передаючи певну конструкцію, але можна увімкнути автоматичний друк типів при виконанні кожної інструкції командою :set +t. Після цього виконання буде виглядати так:
ghci> 4
4
it :: Num a => a
ghci> 'N'
'N'
it :: Char
ghci> 2 + 2 * 4
10
it :: Num a => a
Тепер нам не потрібно виконувати окремі команди, щоб побачити значення та тип результату.
Також можна змінити підказку (prompt) щоб не дивитись кожнісінький раз на те що ми й так знаємо, а саме що ми у ghci.
ghci> :set prompt "> "
> "It's a String"
"It's a String"
it :: String
>
Це вже краще, але далеко до ідеалу, тому додамо ще якусь корисну інформацію, окрім прибирання зайвої, наприклад номер рядка й завантажений модуль.
> :set prompt "[%l] %s> "
[7] Prelude>
Так вже цікавіше.
Є ще одна штучка котра може нам іноді знадобитись при тестах.
[1] Prelude> f = do
<interactive>:1:5: error: [GHC-82311]
Empty 'do' block
Suggested fix: Perhaps you intended to use NondecreasingIndentation
[2] Prelude> :set +m
[3] Prelude> f = do
ghci| putStrLn "Привіт всім хаскелятам та хаскелищам!"
ghci|
[6] Prelude> f
Привіт всім хаскелятам та хаскелищам!
[7] Prelude>
:set +m дозволяє писати багато рядкові конструкції.
Це все добре, але після перезапуску, всі налаштування загубляться у просторі всесвіту й ви втратите свої персональні налаштунки, а допомагає уникнути цього .ghci файл у домашній теці, або у поточній. Просто запишіть у нього всі необхідні команди й ви спаслись.