On 2/4/07, Eric Olander <[EMAIL PROTECTED]> 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 last element to the head of the list
    shiftl :: [a] -> [a]
    shiftl [] = []
    shiftl x = [last x] ++ init x

Well, you could try this, though I'm actually sure it's any faster:

shiftl (x1:x2:xs) = last:x1:init
                      where last:init = shiftl (x2:xs)
shiftl [x] = [x]
shiftl [] = error "shiftl: empty list"

Or, if you don't want to give an error on [], omit the last line and
replace both of the [x] with xs.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to