+sample6 :: forall c . (Int -> <{Int}>@c) -> <{Int -> Int -> Int}>@c -> <{Int -> Int}>@c
+sample6 const <{ (*) }> = pow 6
+ where
+ --pow :: Int -> <{ Int -> Int }>@a
+ pow 0 = <{ \x -> ~~(const 1) }>
+ pow 1 = <{ \x -> x }>
+ pow n = <{ \x -> x * ~~(pow (n - 1)) x }>