[Haskell-beginners] New to Haskell: constructing Data Types

Lyndon Maydwell maydwell at gmail.com
Sat Feb 5 05:45:20 CET 2011


Constructor definitions take type arguments but you have given it
another constructor. To fix this, you might want to create a Variable
datatype and reference it in the Expresion datatype and the Statement
datatype but it's hard (for me) to know without further information.

On Sat, Feb 5, 2011 at 12:33 PM, Tyler Hayes <tgh at pdx.edu> wrote:
> As an exercise, I'm attempting to create an abstract syntax tree for a
> very small language:
>
> data Expression = Variable String
>                | Integer
>                | Expression BinOp Expression
>                deriving Show
>
> data Statement = Assignment Variable Expression    --error!
>               | If Expression Statement Statement
>               | While Expression Statement
>               | Compound Statement
>               deriving Show
>
> data BinOp = Add
>           | Mult
>           | LessThan
>           | GreaterThan
>           deriving Show
>
> However, there is a problem with having "Variable" as an argument to the
> "Assignment" constructor of the "Statement" data type:
>
> Prelude> :l test.hs
> [1 of 1] Compiling Test              ( test.hs, interpreted )
>
> test.hs:8:28: Not in scope: type constructor or class `Variable'
> Failed, modules loaded: none.
>
> An 'assignment' is a variable followed by an expression in this example,
> so what can I do to fix this?
>
> Thanks,
> Tyler
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>



More information about the Beginners mailing list