         @caseParse
             "true": -> true
             "false": -> false
-    getNull = makeParser "getNull", ->
-        @require "null"
-        null
+    getNull = makeParser("getNull", "null").return(-> null)
     getArray = do ->
         arrayBody = makeParser ->
             # This parses everything betweten the [ and ] in an array, and requires there to be at least one item.
-            fst = @require json
+            fst = @require getJson
             @white()
             @optional ",",
                 found: => # Handles the rest of the elements.
                     @white()
                     rest = @require arrayBody
-                    [fst].concat(rest)
+                    cons fst, rest
                 notFound: => [fst] # This means -fst- is the only element.
         makeParser "getArray", ->
             @require "["

        "getArray":   getArray
        "getObject":  getObject
    }

### TODO: Things to THINK ABOUT for the future:
 -Allowing some easier way of creating parsers like ones from makeParser

            prop = @require string
            @require ":"
            @white()
            val = @require getJson
            {"prop": prop, "val": val, "src": @soFar()}
        getObjectBody = makeParser ->
            @optional getObjectPair,
                found: (fst) =>
                    rest = [] # This is the default if there is nothing else in the object
                    @optional ->
                        @white()
                        @require ","
                        @white()
                        rest = @require getObjectBody
                    cons fst, rest
                notFound: => [] # No pairs in the list corresponds to an empty object.
        makeParser "getObject", ->
            # Validate structure and get data:
