Class: Lisp::Relational
Class Method Summary collapse
- .gt_impl(args, env) ⇒ Object
- .gteq_impl(args, env) ⇒ Object
- .lt_impl(args, env) ⇒ Object
- .lteq_impl(args, env) ⇒ Object
- .register ⇒ Object
Class Method Details
.gt_impl(args, env) ⇒ Object
29 30 31 32 |
# File 'lib/rubylisp/relational.rb', line 29 def self.gt_impl(args, env) raise "> needs at least 2 arguments" unless args.length > 1 return Lisp::Boolean.with_value(args.car.evaluate(env).value > args.cadr.evaluate(env).value) end |
.gteq_impl(args, env) ⇒ Object
39 40 41 42 |
# File 'lib/rubylisp/relational.rb', line 39 def self.gteq_impl(args, env) raise ">= needs at least 2 arguments" unless args.length > 1 return Lisp::Boolean.with_value(args.car.evaluate(env).value >= args.cadr.evaluate(env).value) end |
.lt_impl(args, env) ⇒ Object
24 25 26 27 |
# File 'lib/rubylisp/relational.rb', line 24 def self.lt_impl(args, env) raise "< needs at least 2 arguments" unless args.length > 1 return Lisp::Boolean.with_value(args.car.evaluate(env).value < args.cadr.evaluate(env).value) end |
.lteq_impl(args, env) ⇒ Object
34 35 36 37 |
# File 'lib/rubylisp/relational.rb', line 34 def self.lteq_impl(args, env) raise "<= needs at least 2 arguments" unless args.length > 1 return Lisp::Boolean.with_value(args.car.evaluate(env).value <= args.cadr.evaluate(env).value) end |
.register ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/rubylisp/relational.rb', line 5 def self.register Primitive.register("<", "(< number number)\n\nReturns whether the first argument is less than the second argument.") do |args, env| Lisp::Relational::lt_impl(args, env) end Primitive.register(">", "(> number number)\n\nReturns whether the first argument is greater than the second argument.") do |args, env| Lisp::Relational::gt_impl(args, env) end Primitive.register("<=", "(<= number number)\n\nReturns whether the first argument is less than or equal to the second argument.") do |args, env| Lisp::Relational::lteq_impl(args, env) end Primitive.register(">=", "(>= number number)\n\nReturns whether the first argument is greater than or equal to the second argument.") do |args, env| Lisp::Relational::gteq_impl(args, env) end end |