purescript-0.15.15: tests/purs/passing/ScopedTypeVariables.purs
module Main where
import Prelude
import Effect.Console (log)
test1 :: forall a. (a -> a) -> a -> a
test1 f x = g (g x)
where
g :: a -> a
g y = f (f y)
test2 :: forall a. (a -> a) -> a -> a
test2 = h
where
h :: forall b. (b -> b) -> b -> b
h f x = g (g x)
where
g :: b -> b
g y = f (f y)
test3 :: Number
test3 = ((\b -> b :: b) :: forall b. b -> b) 0.0
test4 :: forall a. (a -> a) -> a -> a
test4 = h
where
h :: forall b. (b -> b) -> b -> b
h f x = g (g x)
where
g :: b -> b
g y = j (f (f y))
where
j :: forall b. b -> b
j x = x
main = log "Done"