
I know the type signature of (++), I'm just not seeing `n` as a list, I suppose. I'm reading it as being the Int that is passed to splitAt, though perhaps my thought process is just wonky. On Jun 26, 2011, at 6:41 PM, Mike Meyer wrote:
On Sun, 26 Jun 2011 18:14:44 -0400 Jack Henahan
wrote: I have this code snippet:
import Data.List
aaa x (y:ys) = case splitAt x (y:ys) of (n, x:xs) -> x:n ++ xs (n, xs) -> n ++ xs
I understand what it's meant to do (that is, split a list at index `x` and make a new list with that element at the head, or just return the list when given a singleton), but my brain is failing me when trying to read the notation `n ++ xs`.
Is there some obvious explanation that I'm just forgetting?
Yes. But more importantly, you're forgetting that you can ask the REPL:
Prelude> :t (++) (++) :: [a] -> [a] -> [a]
So it takes two lists and produces a new one. Trying it:
Prelude> [1, 2, 3] ++ [4, 5, 6] [1,2,3,4,5,6]
So ++ concatenates it's operands.
http://www.mired.org/ Independent Software developer/SCM consultant, email for more information. O< ascii ribbon campaign - stop html mail - www.asciiribbon.org
==== "Computer Science is no more about computers than astronomy is about telescopes." -- Edsger Dijkstra ====