import "Prelude" import "JavaBuiltin" as Java class Coercible a b where coerce :: a -> b //instance Coercible a a where // coerce = id instance (Coercible a b) => Coercible [a] [b] where coerce = map coerce // From Byte instance Coercible Byte Integer where coerce = Java.b2i instance Coercible Byte Long where coerce = Java.i2l . Java.b2i // From Character instance Coercible Character Integer where coerce = Java.c2i instance Coercible Character Long where coerce = Java.i2l . Java.c2i // From Short instance Coercible Short Integer where coerce = Java.s2i instance Coercible Short Long where coerce = Java.i2l . Java.s2i // From Integer instance Coercible Integer Byte where coerce = Java.i2b instance Coercible Integer Character where coerce = Java.i2c instance Coercible Integer Short where coerce = Java.i2s instance Coercible Integer Long where coerce = Java.i2l instance Coercible Integer Float where coerce = Java.i2f instance Coercible Integer Double where coerce = Java.i2d instance Coercible Integer String where coerce = coerceIntegerToString // From Long instance Coercible Long Byte where coerce = Java.i2b . Java.l2i instance Coercible Long Character where coerce = Java.i2c . Java.l2i instance Coercible Long Short where coerce = Java.i2s . Java.l2i instance Coercible Long Integer where coerce = Java.l2i instance Coercible Long Float where coerce = Java.l2f instance Coercible Long Double where coerce = Java.l2d instance Coercible Long String where coerce = coerceLongToString // From Float instance Coercible Float Byte where coerce = Java.i2b . Java.f2i instance Coercible Float Short where coerce = Java.i2s . Java.f2i instance Coercible Float Integer where coerce = Java.f2i instance Coercible Float Long where coerce = Java.f2l instance Coercible Float Double where coerce = Java.f2d instance Coercible Float String where coerce = coerceFloatToString // From Double instance Coercible Double Byte where coerce = Java.i2b . Java.d2i instance Coercible Double Short where coerce = Java.i2s . Java.d2i instance Coercible Double Integer where coerce = Java.d2i instance Coercible Double Long where coerce = Java.d2l instance Coercible Double Float where coerce = Java.d2f instance Coercible Double String where coerce = coerceDoubleToString // From String instance Coercible String Integer where coerce = coerceStringToInteger instance Coercible String Long where coerce = coerceStringToLong instance Coercible String Float where coerce = coerceStringToFloat instance Coercible String Double where coerce = coerceStringToDouble // Java imports @private importJava "java.lang.Integer" where @JavaName toString coerceIntegerToString :: Integer -> String @JavaName parseInt coerceStringToInteger :: String -> Integer @private importJava "java.lang.Long" where @JavaName toString coerceLongToString :: Long -> String @JavaName parseLong coerceStringToLong :: String -> Long @private importJava "java.lang.Float" where @JavaName toString coerceFloatToString :: Float -> String @JavaName parseFloat coerceStringToFloat :: String -> Float @private importJava "java.lang.Double" where @JavaName toString coerceDoubleToString :: Double -> String @JavaName parseDouble coerceStringToDouble :: String -> Double