   @return {Some|None} Some(element) is it exists, otherwise None
 ###
 List.prototype.get = (index) -> 
-  if index < 0
+  if index < 0 || this.isEmpty() 
+    new None() 
     new None()
   else if (index == 0)
     new Some(this.head())

  @return {List} A new list containing all the elements of the old with followed by the element 
###
List.prototype.append = (element) -> 
  this.cons(this.head(), this.tail().append(element))
    
###*
  Create a new list by prepending this value

  l = new List(head)
  l.tail = () -> tail
  return l
    
###* 
  Applies a binary operator on all elements of this list going left to right and ending with the
  seed value. This is a curried function that takes a seed value which returns a function that 
