haskell - Using Functions of `a` on `newtype a` -
haskell - Using Functions of `a` on `newtype a` -
let's have next newtype:
newtype foo = foo integer deriving (eq, show)
is there concise way add together 2 foo's:
(foo 10) + (foo 5) == foo 15
or max:
max (foo 10) (foo 5) == foo 5?
i'm curious if it's possible utilize functions of a newtype a rather do:
addfoo :: foo -> foo -> foo addfoo (foo x) (foo y) = foo $ x + y
just haskell98 knows how derive eq , show instances you, can turn on generalizednewtypederiving extension ghc num , ord instances need:
prelude> :set -xgeneralizednewtypederiving prelude> newtype foo = foo integer deriving (eq, show, num, ord) prelude> (foo 10) + (foo 5) == foo 15 true prelude> max (foo 10) (foo 5) == foo 5 false haskell newtype
Comments
Post a Comment