Может ли GHCi сказать мне тип локальной функции на Haskell? - PullRequest
12 голосов
/ 24 января 2010

Можно ли запросить ghci для типа, который он вывел для функции внутри другой функции?

Ответы [ 3 ]

21 голосов
/ 24 января 2010

Это быстрый и ужасный хак, но я обычно просто неправильно использую функцию и читаю сообщение об ошибке:

inc x = x + 1
  where
    f (y, z) = y + z
    g = f :: Char

Вывод GHCi:

Couldn't match expected type `Char'
       against inferred type `(t, t) -> t'
In the expression: f :: Char

Хотя это не учитывает контекст Num t =>, это обычно дает мне достаточно информации для продолжения.

12 голосов
/ 24 января 2010

Вы можете попробовать сделать это, установив точку останова, чтобы функция находилась в области видимости отладчика.

Также я думаю, что EclipseFP может рассказать вам о типах вещей, когда вы наводите на них курсор мыши, по крайней мере, в некоторых случаях.

7 голосов
/ 13 марта 2014

С GHC 7.8+ просто добавьте `asTypeOf` _ к выражению.

См. Узнайте тип выражения / функции с напечатанными отверстиями для подробного объяснения.

...