packages feed

purescript-0.11.0: examples/passing/Superclasses1.purs

module Main where

import Prelude
import Control.Monad.Eff.Console (log, logShow)

class Su a where
  su :: a -> a

class (Su a) <= Cl a where
  cl :: a -> a -> a

instance suNumber :: Su Number where
  su n = n + 1.0

instance clNumber :: Cl Number where
  cl n m = n + m

test :: forall a. Cl a => a -> a
test a = su (cl a a)

main = do
  logShow $ test 10.0
  log "Done"