Haskell :получение статического типа выражения

Я ищу функцию, которая делает то, что делает команда типа GHCi :.

В идеале она должна иметь сигнатуру вроде

getStaticType :: a -> String

a = getStaticType (1+2)
-- a = "(Num t) => t"

b = getStaticType zipWith
-- b = "(a -> b -> c) -> [a] -> [b] -> [c]"

(Примечание :это не имеет ничего общего с Data.Dynamic. Я просто нужен статический тип, выведенный из компилятора.На самом деле функция вообще не нуждается в реализации во время выполнения, так как все вызовы к ней могут быть встроены как константы во время компиляции.Я предполагаю, что он где-то существует, так как GHCi может это сделать)

11
задан hammar 1 May 2012 в 15:48
поделиться