   @return {List} A new list containing the elements of the appended List and the elements of the original List.
 ###
 List.prototype.appendList = (list) -> 
-  this.cons(this.head(), this.tail().appendList(list))
+  if (this.isEmpty())
+    list
+  else
+    this.cons(this.head(), this.tail().appendList(list))
     
 ###*
   Creates a new list by copying all of the items in the argument 'list'

  @return {Some|None} Some(element) is it exists, otherwise None
###
List.prototype.get = (index) -> 
  if index < 0
    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) -> 
  if (this.isEmpty())
    new List(element)
  else
    this.cons(this.head(), this.tail().append(element))
    
###*
  Create a new list by prepending this value
