Re: [Haskell-beginners] Understanding some notation

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 ====

On 26 June 2011 23:48, Jack Henahan
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.
Look at the type of splitAt, the answers are all in the types :) splitAt :: Int -> [a] -> ([a],[a]) So when you do a case match on the result of splitAt x (y:ys) you must be matching on a tuple of lists, because that's what the return type of the list is
participants (2)
-
Benjamin Edwards
-
Jack Henahan