[Haskell-cafe] Links into list

John Sneer johnsneer at operamail.com
Mon May 2 13:10:02 CEST 2011


Hello all,

  I have rather strange question. I wonder whether there is an obvious
solution or not in Haskell. I tried but without defining quite
ugly tree-like structures and incorporating IORefs it seems to me like
impossible.

Note: I use ASCII art to explain.


let l be a Haskell list

    +-+-+-------------------------------------+
l = | | |    ....                             |
    +-+-+-------------------------------------+


let li be another Haskell list

     +-+-+-+
li = |a|b|c|
     +-+-+-+


let hi be a hook/pointer list such, that it links some/all members
of the list li

     +--+--+--+
hi = |pa|pb|pc|
     +--+--+--+
      |  |  |
      V  V  V
     +--+--+--+
li = |a |b |c |
     +--+--+--+


When I insert li into l, I would like to get something like:

                    +--+--+--+
hi =                |pa|pb|pc|
                    +--+--+--+
                     |  |  |
                     V  V  V
     +-+-+----------+--+--+--+---------------------------+
l' = | | |    ....  |a |b |c |                           |
     +-+-+----------+--+--+--+---------------------------+

where l' is still a Haskell list.

Now, I would like to modify, directly via pb the list l' to have:

                    +--+--+--+
hi =                |pa|pb|pc|
                    +--+--+--+
                     |  |  +-------+
                     V  V          V
     +-+-+----------+--+--+-+-+-+-+--+---------------------------+
le = | | |    ....  |a |b |q|w|e|r|c |                           |
     +-+-+----------+--+--+-+-+-+-+--+---------------------------+

where le is a Haskell list, but, in fact accessible through 
the same ID/reference all the time.


Simply: I would like to have direct access into several places
in a very long list.
Moreover, the efficiency and features of Haskell list and
all the functions around it are to be used as well (not all,
but many, nevertheless, I could make them new, if I can
achieve good performance, not a big trouble).

Is it possible, or not? Could you possibly point me to some
resource I can get more information about such "tricks".

Thanks

  John


-- 
  John Sneer
  johnsneer at operamail.com

-- 
http://www.fastmail.fm - A no graphics, no pop-ups email service




More information about the Haskell-Cafe mailing list