From c054cf39a062f9eb377acaa84626bfb7f9b7fe4a Mon Sep 17 00:00:00 2001 From: Joel Chippindale Date: Mon, 28 Apr 2014 19:14:59 +0100 Subject: [PATCH] Implement `or` --- lib/list.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/list.rb b/lib/list.rb index 787126b..1f4c302 100644 --- a/lib/list.rb +++ b/lib/list.rb @@ -24,6 +24,8 @@ def evaluate(env) arguments.first when :cond arguments.detect { |list| list.car.evaluate(env) == Atom::TRUE }.cdr.car.evaluate(env) + when :or + arguments.first.evaluate(env) == Atom::TRUE ? Atom::TRUE : arguments.last.evaluate(env) else first_argument, *other_arguments = arguments.map { |a| a.evaluate(env) } first_argument.send(operation, *other_arguments)