On Jul 13, 2010, at 9:00 PM, Christopher Done wrote:

On 13 July 2010 10:58, vadali <shlomivak...@gmail.com> wrote:\

i want to define a function which takes as a parameter a list which can
contain other lists, eg. [1,[2,3],[4,[5,6]]]

What would the type of a list like that be?

What you _can_ do is
        data List_Or t = Item t | List [List_Or t]
                         deriving (Eq, Ord, Show)
and have a "list" like
        ell :: List_Or Int
        ell = List [Item 1, List [Item 2, Item 3], List [Item 4,
              List [Item 5, Item 6]]]

how would i define a function that can iterate through the items so (in this
example)
iter1 = 1
iter2 = [2,3]
iter3 = [4,[5,6]]


Then you can write functions like
        iter n (List x) = head (drop (n-1) x)
with examples
        *Main> iter 1 ell
        Item 1
        *Main> iter 2 ell
        List [Item 2,Item 3]
        *Main> iter 3 ell
        List [Item 4,List [Item 5,Item 6]]

( can i do that without using the Tree data type? )

This basically _is_ a tree data type, even if not THE Tree
data type.  That's because nested lists are trees.


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to