Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
"Class Aliases"
module NumberStuff where
import qualified Prelude
class CanAdd a where
(+) :: a -> a -> a
class CanNegate a where
negate :: a -> a
class FromInteger a where
fromInteger :: Prelude.Integer -> a
class (CanAdd a, CanNegate a, FromInteger a) => Num a
instance CanAdd Prelude.Integer where
(+) = (Prelude.+)
instance CanNegate Prelude.Integer where
negate = Prelude.negate
instance FromInteger Prelude.Integer where
fromInteger =
instance Num Prelude.Integer
someFunc :: (Num a) => a -> a
someFunc x = negate (x + x + fromInteger 12)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment