On Sat, Oct 25, 2014 at 9:01 AM, Rohit Sharma <rohits79@gmail.com> wrote:
All,

I started learning haskell very recently and have a question on the pattern matching style for lists.

In the below snippet i.e. "(x:xs)" why do we went with round braces and not square? I know we are using cons that tells this is not a tuple but would it not make more sense to write something like [x:xs] instead of (x:xs), i thought round braces was used for pair/tuples?

safeHead [] = Nothing
safeHead (x:xs) = Just x


Yes this can be confusing.

Lets break it into two separate questions:
1. Why [] is not used around x:xs
2. Why () is used

To address 1 start ghci and try out these expressions

1: [2,3]

[1:[2,3]]


To address 2 try out

length [1,2] ++ [3,4]

and then

length ([1,2] ++ [3,4])

Another related example

sin pi/2

and
sin (pi/2)