[Haskell-begin] data declarations

Bas van Dijk v.dijk.bas at gmail.com
Wed Jul 23 03:15:16 EDT 2008

On Wed, Jul 23, 2008 at 5:42 AM, Jeff Zaroyko <jeffzaroyko at gmail.com> wrote:
> data Simple = Tinteger Int
>            | Tbool Bool
> data Composite = Tstring String
>               | Tarray [All]
> data All = Simple | Composite

Don't you mean:

data All = Simple Simple | Composite Composite

So the 'All' type contains the 'Simple' and 'Composite' types. In case
you find it confusing that the constructor names are the same as the
names of the types you can write something like:

data All = S Simple | C Composite

I don't know what your 'k' should do. Because your function...

> k :: All -> [All]
> k a = case a of
>        Simple -> [a]
>        Composite -> [a]

...can be simplified to: 'k a = [a]'  (if you disregard the strictness

which isn't very useful. So I guess you mean something different.



More information about the Beginners mailing list