Class: Lisp::Relational

Inherits:
Object show all
Defined in:
lib/rubylisp/relational.rb

Class Method Summary collapse

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

.registerObject



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