[Haskell-cafe] List operation question

Nicolas Frisby nicolas.frisby at gmail.com
Sun Feb 4 14:24:48 EST 2007


I've always thought that when certain operations are of particular
interest, it's time to use more appropriate data structures, right?
Lists are great and simple and intuitive, but if you need such
operations as shifts, something like a deque is the way to go.

I'm not a data structure pro, but I'm sure someone on this list could
post a neat example. Or you could look for work by Osaki - he seems to
be the reference for functional data structures. "Finger trees" and
"tries" also get a lot of attention around here.

Enjoy.

On 2/4/07, Lennart Augustsson <lennart at augustsson.net> wrote:
> Not much better.  You could define shiftl such that is does a single
> traversal and
> returns both the last element and all but the last.  That will save
> you one traversal.
>
> On Feb 4, 2007, at 18:44 , Eric Olander wrote:
>
> > Hi,
> >    I'm still somewhat new to Haskell, so I'm wondering if there are
> > better ways I could implement the following functions, especially
> > shiftl:
> >
> > >> moves the first element to the end of the list
> >     shiftr :: [a] -> [a]
> >     shiftr [] = []
> >     shiftr (x:y) = y ++ [x]
> >
> > >> moves the last element to the head of the list
> >     shiftl :: [a] -> [a]
> >     shiftl [] = []
> >     shiftl x = [last x] ++ init x
> >
> > -Eric
> > _______________________________________________
> > Haskell-Cafe mailing list
> > Haskell-Cafe at haskell.org
> > http://www.haskell.org/mailman/listinfo/haskell-cafe
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>


More information about the Haskell-Cafe mailing list