fork download
  1. {-# LANGUAGE ExistentialQuantification #-}
  2.  
  3. data Value = A Int
  4.  
  5. data ForallFunc = forall a. Eq a => Forall (Value -> a)
  6.  
  7. unpackA (A int) = int
  8.  
  9. equalityTest :: Value -> Value -> ForallFunc -> Bool
  10. equalityTest arg1 arg2 (Forall unpacker) =
  11. let a1 = unpacker arg1
  12. a2 = unpacker arg2 in
  13. a1 == a2
  14.  
  15. main = putStrLn $ show $ equalityTest (A 1) (A 1) (Forall unpackA)
Success #stdin #stdout 0s 4548KB
stdin
Standard input is empty
stdout
True