MicroHs-0.9.5.0: tests/FunDep.hs
module FunDep(main) where
import Prelude
import Data.Char
class C a b | a -> b where
f :: a -> b
instance C Char Int where
f = ord
class Plus a b c | a b -> c where
plus :: a -> b -> c
instance Plus Int Int Int where
plus = (+)
instance Plus Double Double Double where
plus = (+)
instance Plus Int Double Double where
plus x y = fromIntegral x + y
instance Plus Double Int Double where
plus x y = x + fromIntegral y
class Iso a b | a -> b, b -> a where
isoL :: a -> b
isoR :: b -> a
instance Iso Char Int where
isoL = ord
isoR = chr
main :: IO ()
main = do
print $ f 'a' + 1
print $ plus (1::Int) (2::Int)
print $ plus (1::Int) (2::Double)
print $ plus (1::Double) (2::Int)
print $ plus (1::Double) (2::Double)
print $ isoL 'a'
print $ isoR (100::Int)