Подтвердить что ты не робот

Предупреждения о загрузке из приглашения GHCi

При использовании GHCi я хотел бы знать, как использовать параметр -Wall при загрузке (повторной) из приглашения.

Например, в разделе 3.3 Советы по программированию Haskell Пример с защитой выглядит следующим образом:

-- Bad implementation:
fac :: Integer -> Integer
fac n | n == 0 = 1
      | n /= 0 = n * fac (n-1)

-- Slightly improved implementation:
fac :: Integer -> Integer
fac n | n == 0    = 1
      | otherwise = n * fac (n-1)

В нем говорится: "Первая проблема заключается в том, что компилятору почти невозможно проверить, являются ли такие стражи исчерпывающими, поскольку условия защиты могут быть произвольно сложными (GHC предупредит вас, если вы используете опцию -Wall).

Я знаю, что могу набрать ghci -Wall some_file.hs из командной строки, но однажды в подсказке я не уверен, как проверить предупреждения, если я хочу перезагрузить.

Кажется, я не могу найти ответ, пытаясь сделать это в Google!

Спасибо заранее!

4b9b3361

Ответ 1

В ghci введите

:set -Wall

и если вы хотите отключить все предупреждения, вы можете сделать

:set -w

(Обратите внимание на строчный w. Верхний регистр будет включать обычные предупреждения.)

В руководстве пользователя говорится, что мы можем использовать любые параметры командной строки ghc в командной строке, если они указаны как динамические, и мы можем видеть из ссылка на флаг, что все настройки предупреждений являются динамическими.

Здесь пример сеанса с использованием "плохой реализации" выше:

Prelude> :l temp.hs
[1 of 1] Compiling Main             ( temp.hs, interpreted )
Ok, modules loaded: Main.
(0.11 secs, 6443184 bytes)

*Main> :set -Wall

*Main> :l temp.hs
[1 of 1] Compiling Main             ( temp.hs, interpreted )

temp.hs:3:1:
    Warning: Pattern match(es) are non-exhaustive
             In an equation for `fac': Patterns not matched: _

Ok, modules loaded: Main.
(0.14 secs, 6442800 bytes)