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 <[EMAIL PROTECTED]> 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
> [email protected]
> http://www.haskell.org/mailman/listinfo/haskell-cafe

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to