Чтобы увидеть подпись функция в Haskell в GHCI, я должен добавить к ней префикс :t
:Как настроить GHCI от Haskell для интерактивной оценки функций для их подписи (типа) вместо получения ошибок?
Prelude> f = \x -> x+1
Prelude> :t f
f :: Num a => a -> a
Но типирование, что префикс каждый раз, когда быстро растет старый. Если я оставлю его, я получаю сообщение об ошибке:
Prelude> f
<interactive>:5:1: error:
• No instance for (Show (a0 -> a0)) arising from a use of ‘print’
(maybe you haven't applied a function to enough arguments?)
• In the first argument of ‘print’, namely ‘it’
In a stmt of an interactive GHCi command: print it
Вместо того, чтобы получить это сообщение об ошибке, я хотел бы видеть некоторую полезную информацию о моей функции f
, подобной той, я получаю с :t f
(возможно, даже больше информации о f
).
Как настроить GHCI для достижения этой функциональности, т. Е. Получить информацию о функциях после ввода без :t
?
Не ответы: команда ': i' показывает дополнительную информацию о значении, выходящем за его тип; он также работает с классами (однако это команда префикса, как ': t'). Кроме того, ': set + t' приведет к тому, что GHCi напечатает тип всего, что было успешно оценено в командной строке (однако, к сожалению, это не помогает в ситуации без экземпляра для показа, о которой вы говорите). – duplode
Я думаю, вы должны перефразировать вопрос таким образом, чтобы не подавать GHCi. То, что вы хотите, кажется довольно разумным; люди, скорее всего, будут больше заинтересованы в том, чтобы помочь, если вы спросите красиво. – dfeuer
Ну, сообщение об ошибке должно подсказывать вам, как работает реплика. Я не думаю, что вы хотите. Это может быть хорошей идеей.Или это может быть произвольный случай, который бы смутил людей. – jberryman