computationbook icon indicating copy to clipboard operation
computationbook copied to clipboard

no need two kind of machine in small-step.

Open aQuaYi opened this issue 6 years ago • 1 comments

Add class as example

change

class Add
  def reduce(environment)
    if left.reducible?
      Add.new(left.reduce(environment), right)
    elsif right.reducible?
      Add.new(left, right.reduce(environment))
    else
      Number.new(left.value + right.value)
    end
  end
end

to

class Add < Struct.new(:left, :right)
   def reduce(environment)
    if left.reducible?
      left_reduce,  environment = left.reduce(environment)
      [Add.new(left_reduce, right), environment]
    elsif right.reducible?
      right_reduce, environment = right.reduce(environment)
      [Add.new(left, right_reduce), environment]
    else
      [Number.new(left.value + right.value), environment]
    end
  end
end

aQuaYi avatar Jun 15 '19 08:06 aQuaYi

here is my small-step code

https://github.com/aQuaYi/computation/tree/master/small_step

aQuaYi avatar Jun 15 '19 08:06 aQuaYi