[Haskell-cafe] Function Type Calculation (revisited)
PR Stanley
prstanley at ntlworld.com
Sat Apr 26 07:01:21 EDT 2008
Hi
I know we've already looked at the topic of function type calculation
though last time I didn't have the chance to go through it
thoroughly. So here it is again. Apologies for the repetition. I've
had a try at calculating function types for two examples below. So to
start with I'd be grateful for an assessment of my efforts. All
comments are welcome.
Thanks,
Paul
[1]
funk f x = f (funk f) x
f :: a
x :: b
funk f x :: c
therefore funk :: a -> b -> c
RHS
f (funk f) x :: c
f (funk f) :: d -> c
x :: d
f :: e -> d -> c
funk :: h -> e
f :: h
unification
f :: a = h = (e -> d -> c)
x b = d
therefore funk :: ((h -> e) -> b -> c) -> b -> c
[2]
w f = f f
Assigning Types
f :: a
w f :: b
therefore w :: a -> b
RHS
f f :: b
f :: c -> b
f :: c
f :: a = b = c = (c -> b)
therefore w :: (a -> a) -> a
More information about the Haskell-Cafe
mailing list