[Haskell-beginners] Convert my own types to the Haskell types using typeclass
ke dou
kd6ck at virginia.edu
Fri Apr 11 16:50:45 UTC 2014
Hi,
I want to define a typeclass that can convert my own types like MyBool,
MyInt, MyOption to according Haskell types -- Bool, Int, Maybe.
Currently I can convert the first two types, but for MyOption, I don't how
to do, since it is a polymophic type.
Here is my toy program:
--------------------------------------------------------------
{-# LANGUAGE TypeFamilies #-}
module Coercible where
import qualified Prelude
data MyBool = MyTrue | MyFalse
data MyInt = Zero | One | Two
data MyOption a =
Some a
| None
class Coercible a where
type Return a :: *
toHaskell :: a -> (Return a)
instance Coercible MyBool where
type Return MyBool = Prelude.Bool
toHaskell MyTrue = Prelude.True
toHaskell MyFalse = Prelude.False
instance Coercible MyInt where
type Return MyInt = Prelude.Int
toHaskell Zero = 0
toHaskell One = 1
toHaskell Two = 2
instance Coercible (MyOption a) where
type Return (MyOption a) = Prelude.Maybe a
toHaskell (Some a) = Prelude.Just a
toHaskell None = Prelude.Nothing
--------------------------------------------------------------------------
The problem occurs when I am trying to use "toHaskell (Some MyBool)", the
error message is "Not in scope: data constructor `MyBool'".
Any hints will be appreciated !!
Best,
--Ke
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20140411/dbc7b037/attachment.html>
More information about the Beginners
mailing list