[Haskell-cafe] Is there a way to find out the type inferred for a local function inside another function? :)
Daniel Fischer
daniel.is.fischer at googlemail.com
Thu Apr 7 22:08:18 CEST 2011
On Thursday 07 April 2011 21:52:29, KC wrote:
>
There are probably better ways, but:
module Infer where
foo :: Num a => [a] -> a
foo = go 0 0
where
go :: b
go i s (x:xs) = go (i+1) (s+i*x) xs
go _ s _ = s
$ ghc Infer
[1 of 1] Compiling Infer ( Infer.hs, Infer.o )
Infer.hs:7:5:
Could not deduce (b ~ (a0 -> a0 -> [a0] -> a0))
from the context (Num a)
bound by the type signature for foo :: Num a => [a] -> a
at Infer.hs:(4,1)-(8,16)
`b' is a rigid type variable bound by
the type signature for go :: b at Infer.hs:7:5
The equation(s) for `go' have three arguments,
but its type `b' has none
In an equation for `foo':
foo
= go 0 0
where
go :: b
go i s (x : xs) = go (i + 1) (s + i * x) xs
go _ s _ = s
sort of does it.
More information about the Haskell-Cafe
mailing list