From d23c849cf9b9a1e77edcae6b69e0266648652b6d Mon Sep 17 00:00:00 2001 From: "Elf M. Sternberg" Date: Thu, 28 Apr 2016 21:57:30 -0700 Subject: [PATCH] Updating to prefer nilp() over '== nil' --- src/lists.coffee | 4 ++-- src/reduce.coffee | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/lists.coffee b/src/lists.coffee index df897d4..7eec050 100644 --- a/src/lists.coffee +++ b/src/lists.coffee @@ -44,8 +44,8 @@ recordp = (c) -> Object.prototype.toString.call(c) == '[object Object]' nilp = (c) -> !!c.isList and c.length == 0 cons = (a = nil, b = nil) -> - return nil if (nilp a) and (nilp b) - if (a) then ConsList(a, b) else ConsList(b) + return (new ConsList()) if (nilp a) and (nilp b) + if (a) then (new ConsList(a, b)) else (new ConsList(b)) car = (c) -> c[0] cdr = (c) -> c[1] diff --git a/src/reduce.coffee b/src/reduce.coffee index ce0b894..82c7fa9 100644 --- a/src/reduce.coffee +++ b/src/reduce.coffee @@ -1,6 +1,7 @@ {car, cdr, cons, listp, pairp, nilp, nil, list, listToString} = require './lists' + length = (lst, l = 0) -> return l if (nilp lst) length (cdr lst), (l + 1) @@ -20,6 +21,7 @@ reduce = (lst, iteratee, memo, context) -> null memo + map = (lst, iteratee, context, count = 0) -> return nil if nilp lst product = iteratee.call(context, (car lst), count, lst) @@ -27,6 +29,7 @@ map = (lst, iteratee, context, count = 0) -> map((cdr lst), iteratee, context, count + 1) cons product, rest + rmap = (lst, iteratee, context, count = 0) -> ptr = lst ret = cons() @@ -35,8 +38,10 @@ rmap = (lst, iteratee, context, count = 0) -> ptr = cdr ptr ret + reverse = (lst) -> rmap lst, (i) -> i + filter = (lst, iteratee, context) -> return nil if nilp lst if iteratee.call(context, (car lst), lst) @@ -44,6 +49,7 @@ filter = (lst, iteratee, context) -> else filter (cdr lst), iteratee, context + module.exports = length: length reduce: reduce