import "Prelude" myShow :: Dynamic -> String myShow (Dynamic v) = show (v :: Integer) myShow (Dynamic v) = show (v :: Double) myShow (Dynamic v) = show (v :: String) myShow (Dynamic v) = show (v :: Boolean) myShow (Dynamic v) = "[\(intercalate ", " $ map myShow v)]" myShow _ = "Unknown" main = myShow $ Dynamic [Dynamic False, Dynamic (3 :: Integer), Dynamic (3.1 :: Double), Dynamic "Foo"] -- [False, 3, 3.1, "Foo"]