3VCZ͔Β 3VTU 3VCZͰ DMBTTͰදݱ͢Δ͕ʜ class Number < Struct.new(:value) end class Var < Struct.new(:value) end class Add < Struct.new(:left, :right) end class Multiply < Struct.new(:left, :right) end class LessThan < Struct.new(:left, :right) end class BoolValue < Struct.new(:bool) end
3VCZ͔Β 3VTU 3VCZؔΛ DMBTTʹॻ͘ class Number < Struct.new(:value) def reducible? false end end class Add < Struct.new(:left, :right) def reducible? true end end (…)
3VCZ͔Β 3VTU ଟ͘ͷݴޠͰ࠶ىߏී௨ʹѻ͑Δ class Number < Struct.new(:value) end class Var < Struct.new(:value) end class Add < Struct.new(:left, :right) end class Multiply < Struct.new(:left, :right) end class LessThan < Struct.new(:left, :right) end class BoolValue < Struct.new(:bool) end
3VCZ͔Β 3VTU ଟ͘ͷݴޠͰ࠶ىߏී௨ʹѻ͑Δ class Number < Struct.new(:value) end class Var < Struct.new(:value) end class Add < Struct.new(:left, :right) end class Multiply < Struct.new(:left, :right) end class LessThan < Struct.new(:left, :right) end class BoolValue < Struct.new(:bool) end ࣮ߦ͔ͯ͠Β ελοΫΦʔόʔϑϩʔͨ͠Γ͢Δ
3VCZ͔Β 3VTU ঢ়ଶͷอଘॲཧͲ͏ͨ͠Βʜ class Machine < Struct.new(:expression) def step self.expression = expression.reduce end def run while expression.reducible? puts expression step end puts expression end end