ここの型を知りたい

こんなかんじに使う.

% echo 'length x' | ./hint
[a]
% echo 'x + 1' | ./hint
(GHC.Num.Num a) => a
% echo 'foldl x 0 [2,3]' | ./hint
(GHC.Num.Num a, GHC.Num.Num b) => a -> b -> a
% echo 'nub x' | ./hint Data.List
(GHC.Classes.Eq a) => [a]

元ネタは

GHC APIにLHsExpr,TyThingがあるので、f ? a bっていう式の?の型が知りたい!!ってときに\x -> f x a bと変形し型を推論させたTyThingからxに相当する部分を取り出すことでagda2-modeの?みたいなものを作れそうですね

http://twitter.com/hogehogefoobar/status/13598939209

これなんだけど,f ? a b を \x -> f x a b に変形する方法がわからなかったので,\x -> f x a b の状態で x の型を表示するようにしてみた.


コンパイルには ghc-paths が必要.
http://gist.github.com/394878