On 08/19/2011 08:50 AM, Ryan Ingram wrote: > > ki1 :: KI () Int > ki1 = KI @Int (\() s -> (s+1, s)) > > ki2 :: KI () Int > ki2 = KI @() (\() () -> ((), 0)) > > f :: Bool -> KI () Int > f x = if x then ki1 else ki2 > > iso f = KI ?? ?? > > The problem is that we have multiple possible internal state types! Aha! Nice counterexample. Thanks :)