lookup = require './lookup' {car, cdr, cadr, caadr, cdadr} = require './lists' lispeval = (element, scope) -> switch (car element) when 'number' then parseInt (cadr element), 10 when 'string' then (cadr element) when 'symbol' then lookup scope, (cadr element) when 'list' proc = lispeval (caadr element), scope args = cdadr element proc args, scope else throw new Error ("Unrecognized type in parse: #{(car element)}") module.exports = lispeval