Skip to content

Instantly share code, notes, and snippets.

@jsl
Created August 12, 2014 03:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jsl/995ccbe928e50635a5d4 to your computer and use it in GitHub Desktop.
Save jsl/995ccbe928e50635a5d4 to your computer and use it in GitHub Desktop.
Ruby generated file from Idris -> Ruby backend
#!/usr/bin/env ruby
# Example generated from https://github.com/edwinb/idris-demos/blob/master/RLE/rle-vect.idr.
class I_VM
attr_accessor :valstack, :valstack_top, :valstack_base, :ret, :callstack
def initialize()
@valstack = []
@valstack_top = 0
@valstack_base = 0
@ret = nil
@callstack = []
end
end
i_valstack = []
i_callstack = []
class I_CON
attr_accessor :tag, :args, :app, :ev
def initialize(tag,args,app,ev)
@tag = tag
@args = args
@app = app
@ev = ev
end
end
def i_SCHED(vm)
$i_vm = vm
$i_valstack = vm.valstack
$i_valstack_top = vm.valstack_top
$i_valstack_base = vm.valstack_base
$i_ret = vm.ret
$i_callstack = vm.callstack
end
def i_SLIDE(args)
for i in 0 ... args
$i_valstack[$i_valstack_base + i] = $i_valstack[$i_valstack_top + i]
end
end
def i_PROJECT(val,loc,arity)
for i in 0 ... arity
$i_valstack[$i_valstack_base + i + loc] = val.args[i]
end
end
def i_CALL(fun,args)
$i_callstack.push(args)
$i_callstack.push(fun)
end
def i_ffiWrap(fid,oldbase,myoldbase)
return Proc.new do |*arguments|
$i_callstack = []
$i_valstack = []
res = fid
arguments.each do |arg|
if res.instance_of?(I_CON) then
$i_valstack_top += 1
$i_valstack[$i_valstack_top] = res
$i_valstack[$i_valstack_top + 1] = arg
i_SLIDE(2)
$i_valstack_top = $i_valstack_base + 2
i_CALL($_idris__123_APPLY0_125_,[oldbase])
while $i_callstack.length > 0 do
func = $i_callstack.pop()
args = $i_callstack.pop()
func.call(*args)
end
res = $i_ret
end
end
$i_callstack = $i_vm.callstack
$i_valstack = $i_vm.valstack
$i_ret
end
end
def i_charCode(s)
s.class == String ? s.ord : s[0]
end
def i_fromCharCode(c)
c.class == String ? c : c.chr
end
def i_systemInfo()
"Ruby #{RUBY_VERSION} [#{RUBY_PLATFORM}]"
end
$_idris_Prelude_46_Vect_46__43__43__0 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 7] = $i_ret
$i_ret = I_CON.new(1,[$i_valstack[$i_valstack_base + 5],$i_valstack[$i_valstack_base + 7]],nil,nil)
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
$_idris_Prelude_46_Vect_46__43__43_ = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 5
case $i_valstack[$i_valstack_base + 3].tag
when 1
i_PROJECT($i_valstack[$i_valstack_base + 3],5,2)
$i_valstack[$i_valstack_base + 7] = nil
$i_valstack[$i_valstack_base + 8] = nil
$i_valstack[$i_valstack_base + 9] = nil
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 7]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 8]
$i_valstack[$i_valstack_top + 2] = $i_valstack[$i_valstack_base + 9]
$i_valstack[$i_valstack_top + 3] = $i_valstack[$i_valstack_base + 6]
$i_valstack[$i_valstack_top + 4] = $i_valstack[$i_valstack_base + 4]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 5
i_CALL($_idris_Prelude_46_Vect_46__43__43__0,[oldbase,myoldbase])
i_CALL($_idris_Prelude_46_Vect_46__43__43_,[myoldbase])
when 0
$i_ret = $i_valstack[$i_valstack_base + 4]
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
end
$_idris_Force_0 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 3] = $i_ret
$i_ret = $i_valstack[$i_valstack_base + 3]
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
$_idris_Prelude_46_Either_46_choose = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 1
case $i_valstack[$i_valstack_base].tag
when 0
$i_ret = $i_CON_1
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
when 1
$i_ret = $i_CON_0
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
end
$_idris_Main_46_compress_0 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 4] = $i_ret
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 2]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 3]
$i_valstack[$i_valstack_top + 2] = $i_valstack[$i_valstack_base + 4]
i_SLIDE(3)
$i_valstack_top = $i_valstack_base + 3
i_CALL($_idris__123_Main_46_compress20_125_,[oldbase])
end
$_idris_Main_46_compress = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 3
$i_valstack[$i_valstack_base + 2] = nil
$i_valstack[$i_valstack_base + 3] = nil
$i_valstack[$i_valstack_base + 4] = nil
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 4]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 1]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 2
i_CALL($_idris_Main_46_compress_0,[oldbase,myoldbase])
i_CALL($_idris_Main_46_rle,[myoldbase])
end
$_idris_Main_46_compressString_5 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 2] = $i_ret
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 1]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 2]
i_SLIDE(2)
$i_valstack_top = $i_valstack_base + 2
i_CALL($_idris_Main_46_compress,[oldbase])
end
$_idris_Main_46_compressString_4 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 3] = $i_ret
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 2]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 3]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 2
i_CALL($_idris_Main_46_compressString_5,[oldbase,myoldbase])
i_CALL($_idris_Prelude_46_Vect_46_fromList,[myoldbase])
end
$_idris_Main_46_compressString_3 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 4] = $i_ret
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 3]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 4]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 2
i_CALL($_idris_Main_46_compressString_4,[oldbase,myoldbase])
i_CALL($_idris__123_Prelude_46_Strings_46_unpack27_125_,[myoldbase])
end
$_idris_Main_46_compressString_2 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 4] = $i_ret
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 4]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 2
i_CALL($_idris_Main_46_compressString_3,[oldbase,myoldbase])
i_CALL($_idris__123_Prelude_46_Strings_46_strM25_125_,[myoldbase])
end
$_idris_Main_46_compressString_1 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 4] = $i_ret
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 4]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 1
i_CALL($_idris_Main_46_compressString_2,[oldbase,myoldbase])
i_CALL($_idris_Prelude_46_Either_46_choose,[myoldbase])
end
$_idris_Main_46_compressString_0 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 4] = $i_ret
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 4]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 1
i_CALL($_idris_Main_46_compressString_1,[oldbase,myoldbase])
i_CALL($_idris_Prelude_46_Bool_46_not,[myoldbase])
end
$_idris_Main_46_compressString = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 4
$i_valstack[$i_valstack_base + 1] = nil
$i_valstack[$i_valstack_base + 2] = nil
$i_valstack[$i_valstack_base + 3] = nil
$i_valstack[$i_valstack_base + 4] = ""
$i_valstack[$i_valstack_base + 4] = ($i_valstack[$i_valstack_base] == $i_valstack[$i_valstack_base + 4])?(1):(0)
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 4]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 1
i_CALL($_idris_Main_46_compressString_0,[oldbase,myoldbase])
i_CALL($_idris_Prelude_46_Classes_46_intToBool,[myoldbase])
end
$_idris_Prelude_46_Vect_46_fromList_0 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 4] = $i_ret
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 2]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 3]
$i_valstack[$i_valstack_top + 2] = $i_valstack[$i_valstack_base + 4]
i_SLIDE(3)
$i_valstack_top = $i_valstack_base + 3
i_CALL($_idris_Prelude_46_Vect_46_reverse,[oldbase])
end
$_idris_Prelude_46_Vect_46_fromList = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 5
$i_valstack[$i_valstack_base + 2] = nil
$i_valstack[$i_valstack_base + 3] = nil
$i_valstack[$i_valstack_base + 4] = nil
$i_valstack[$i_valstack_base + 5] = nil
$i_valstack[$i_valstack_base + 6] = $i_CON_0
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 4]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 5]
$i_valstack[$i_valstack_top + 2] = $i_valstack[$i_valstack_base + 6]
$i_valstack[$i_valstack_top + 3] = $i_valstack[$i_valstack_base + 1]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 4
i_CALL($_idris_Prelude_46_Vect_46_fromList_0,[oldbase,myoldbase])
i_CALL($_idris_Prelude_46_Vect_46_fromList_39_,[myoldbase])
end
$_idris_Prelude_46_Vect_46_fromList_39_ = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 5
case $i_valstack[$i_valstack_base + 3].tag
when 1
i_PROJECT($i_valstack[$i_valstack_base + 3],4,2)
$i_valstack[$i_valstack_base + 6] = nil
$i_valstack[$i_valstack_base + 7] = nil
$i_valstack[$i_valstack_base + 8] = I_CON.new(1,[$i_valstack[$i_valstack_base + 4],$i_valstack[$i_valstack_base + 2]],nil,nil)
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 6]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 7]
$i_valstack[$i_valstack_top + 2] = $i_valstack[$i_valstack_base + 8]
$i_valstack[$i_valstack_top + 3] = $i_valstack[$i_valstack_base + 5]
i_SLIDE(4)
$i_valstack_top = $i_valstack_base + 4
i_CALL($_idris_Prelude_46_Vect_46_fromList_39_,[oldbase])
when 0
$i_ret = $i_valstack[$i_valstack_base + 2]
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
end
$_idris_Prelude_46_Classes_46_intToBool = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 1
if $i_valstack[$i_valstack_base] == 0
$i_ret = $i_CON_0
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
else
$i_ret = $i_CON_1
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
end
$_idris_Main_46_main_0 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base] = $i_ret
$i_valstack[$i_valstack_base + 1] = "\n"
$i_valstack[$i_valstack_base] = $i_valstack[$i_valstack_base] + $i_valstack[$i_valstack_base + 1]
$i_ret = I_CON.new(65615,[$i_valstack[$i_valstack_base]],$_idris__123_APPLY0_125__65615,nil)
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
$_idris_Main_46_main = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 2
$i_valstack[$i_valstack_base] = "foooobaaaarbaaazzzzz"
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 1
i_CALL($_idris_Main_46_main_0,[oldbase,myoldbase])
i_CALL($_idris_Main_46_compressString,[myoldbase])
end
$_idris_Prelude_46_Bool_46_not = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 1
case $i_valstack[$i_valstack_base].tag
when 0
$i_ret = $i_CON_1
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
when 1
$i_ret = $i_CON_0
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
end
$_idris_Prelude_46_putStr = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 1
$i_ret = print($i_valstack[$i_valstack_base])
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
$_idris_really_95_believe_95_me = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 1
$i_ret = $i_valstack[$i_valstack_base + 2]
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
$_idris_Prelude_46_Vect_46_replicate_0 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 4] = $i_ret
$i_ret = I_CON.new(1,[$i_valstack[$i_valstack_base + 2],$i_valstack[$i_valstack_base + 4]],nil,nil)
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
$_idris_Prelude_46_Vect_46_replicate = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 2
if $i_valstack[$i_valstack_base + 1] == 0
$i_ret = $i_CON_0
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
else
$i_valstack[$i_valstack_base + 3] = 1
$i_valstack[$i_valstack_base + 3] = $i_valstack[$i_valstack_base + 1] - $i_valstack[$i_valstack_base + 3]
$i_valstack[$i_valstack_base + 4] = nil
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 4]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 3]
$i_valstack[$i_valstack_top + 2] = $i_valstack[$i_valstack_base + 2]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 3
i_CALL($_idris_Prelude_46_Vect_46_replicate_0,[oldbase,myoldbase])
i_CALL($_idris_Prelude_46_Vect_46_replicate,[myoldbase])
end
end
$_idris_Prelude_46_Vect_46_reverse = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 8
$i_valstack[$i_valstack_base + 3] = nil
$i_valstack[$i_valstack_base + 4] = nil
$i_valstack[$i_valstack_base + 5] = nil
$i_valstack[$i_valstack_base + 6] = nil
$i_valstack[$i_valstack_base + 7] = nil
$i_valstack[$i_valstack_base + 8] = nil
$i_valstack[$i_valstack_base + 9] = $i_CON_0
$i_valstack[$i_valstack_base + 10] = nil
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 3]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 4]
$i_valstack[$i_valstack_top + 2] = $i_valstack[$i_valstack_base + 5]
$i_valstack[$i_valstack_top + 3] = $i_valstack[$i_valstack_base + 6]
$i_valstack[$i_valstack_top + 4] = $i_valstack[$i_valstack_base + 7]
$i_valstack[$i_valstack_top + 5] = $i_valstack[$i_valstack_base + 8]
$i_valstack[$i_valstack_top + 6] = $i_valstack[$i_valstack_base + 9]
$i_valstack[$i_valstack_top + 7] = $i_valstack[$i_valstack_base + 10]
$i_valstack[$i_valstack_top + 8] = $i_valstack[$i_valstack_base + 2]
i_SLIDE(9)
$i_valstack_top = $i_valstack_base + 9
i_CALL($_idris_Prelude_46_Vect_46_reverse_58_reverse_39__58_0,[oldbase])
end
$_idris_Prelude_46_Vect_46_reverse_39__95_lemma_95_1 = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 1
$i_ret = $i_valstack[$i_valstack_base + 7]
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
$_idris_Main_46_rle_0 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 6] = $i_ret
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 4]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 2]
$i_valstack[$i_valstack_top + 2] = $i_valstack[$i_valstack_base + 5]
$i_valstack[$i_valstack_top + 3] = $i_valstack[$i_valstack_base + 6]
i_SLIDE(4)
$i_valstack_top = $i_valstack_base + 4
i_CALL($_idris__123_Main_46_rle17_125_,[oldbase])
end
$_idris_Main_46_rle = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 5
case $i_valstack[$i_valstack_base + 1].tag
when 1
i_PROJECT($i_valstack[$i_valstack_base + 1],2,2)
$i_valstack[$i_valstack_base + 4] = nil
$i_valstack[$i_valstack_base + 5] = nil
$i_valstack[$i_valstack_base + 6] = nil
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 6]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 3]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 2
i_CALL($_idris_Main_46_rle_0,[oldbase,myoldbase])
i_CALL($_idris_Main_46_rle,[myoldbase])
when 0
$i_ret = $i_CON_0
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
end
$_idris_run_95__95_IO = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 1
$i_valstack[$i_valstack_base + 1] = $i_CON_0
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 1]
i_SLIDE(2)
$i_valstack_top = $i_valstack_base + 2
i_CALL($_idris__123_APPLY0_125_,[oldbase])
end
$_idris_Prelude_46_Strings_46_unpack_3 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 2] = $i_ret
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 1]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 2]
i_SLIDE(2)
$i_valstack_top = $i_valstack_base + 2
i_CALL($_idris__123_Prelude_46_Strings_46_unpack27_125_,[oldbase])
end
$_idris_Prelude_46_Strings_46_unpack_2 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 2] = $i_ret
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 2]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 2
i_CALL($_idris_Prelude_46_Strings_46_unpack_3,[oldbase,myoldbase])
i_CALL($_idris__123_Prelude_46_Strings_46_strM25_125_,[myoldbase])
end
$_idris_Prelude_46_Strings_46_unpack_1 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 2] = $i_ret
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 2]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 1
i_CALL($_idris_Prelude_46_Strings_46_unpack_2,[oldbase,myoldbase])
i_CALL($_idris_Prelude_46_Either_46_choose,[myoldbase])
end
$_idris_Prelude_46_Strings_46_unpack_0 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 2] = $i_ret
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 2]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 1
i_CALL($_idris_Prelude_46_Strings_46_unpack_1,[oldbase,myoldbase])
i_CALL($_idris_Prelude_46_Bool_46_not,[myoldbase])
end
$_idris_Prelude_46_Strings_46_unpack = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 2
$i_valstack[$i_valstack_base + 1] = nil
$i_valstack[$i_valstack_base + 2] = ""
$i_valstack[$i_valstack_base + 2] = ($i_valstack[$i_valstack_base] == $i_valstack[$i_valstack_base + 2])?(1):(0)
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 2]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 1
i_CALL($_idris_Prelude_46_Strings_46_unpack_0,[oldbase,myoldbase])
i_CALL($_idris_Prelude_46_Classes_46_intToBool,[myoldbase])
end
$_idris__123_APPLY0_125__65615 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 2] = $i_valstack[$i_valstack_base].args[0]
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 2]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 1]
i_SLIDE(2)
$i_valstack_top = $i_valstack_base + 2
i_CALL($_idris_Prelude_46_putStr,[oldbase])
end
$_idris__123_APPLY0_125_ = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 1
if $i_valstack[$i_valstack_base].instance_of?(I_CON) && $i_valstack[$i_valstack_base].app
$i_valstack[$i_valstack_base].app.call(oldbase,myoldbase)
else
$i_ret = nil
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
end
$_idris__123_EVAL0_125_ = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 1
if $i_valstack[$i_valstack_base].instance_of?(I_CON) && $i_valstack[$i_valstack_base].ev
$i_valstack[$i_valstack_base].ev.call(oldbase,myoldbase)
else
$i_ret = $i_valstack[$i_valstack_base]
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
end
$_idris__123_runMain0_125__1 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base] = $i_ret
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base]
$i_valstack[$i_valstack_base] = $i_valstack[$i_valstack_top]
$i_valstack_top = $i_valstack_base + 1
i_CALL($_idris__123_EVAL0_125_,[oldbase])
end
$_idris__123_runMain0_125__0 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base] = $i_ret
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 1
i_CALL($_idris__123_runMain0_125__1,[oldbase,myoldbase])
i_CALL($_idris_run_95__95_IO,[myoldbase])
end
$_idris__123_runMain0_125_ = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 1
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
i_CALL($_idris__123_runMain0_125__0,[oldbase,myoldbase])
i_CALL($_idris_Main_46_main,[myoldbase])
end
$_idris__123_Main_46_rle17_125__0 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 7] = $i_ret
$i_valstack[$i_valstack_base + 8] = nil
$i_valstack[$i_valstack_base + 9] = nil
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 1]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 6]
$i_valstack[$i_valstack_top + 2] = $i_valstack[$i_valstack_base + 7]
$i_valstack[$i_valstack_top + 3] = $i_valstack[$i_valstack_base + 8]
$i_valstack[$i_valstack_top + 4] = $i_valstack[$i_valstack_base + 5]
$i_valstack[$i_valstack_top + 5] = $i_valstack[$i_valstack_base + 4]
$i_valstack[$i_valstack_top + 6] = $i_valstack[$i_valstack_base + 9]
i_SLIDE(7)
$i_valstack_top = $i_valstack_base + 7
i_CALL($_idris__123__123_Main_46_rle17_125_18_125_,[oldbase])
end
$_idris__123_Main_46_rle17_125_ = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 6
case $i_valstack[$i_valstack_base + 3].tag
when 1
i_PROJECT($i_valstack[$i_valstack_base + 3],4,3)
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 1]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 6]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 2
i_CALL($_idris__123_Main_46_rle17_125__0,[oldbase,myoldbase])
i_CALL($_idris_Decidable_46_Equality_46__64_Decidable_46_Equality_46_DecEq_36_Char_58__33_decEq_58_0,[myoldbase])
when 0
$i_valstack[$i_valstack_base + 4] = $i_CON_0
$i_valstack[$i_valstack_base + 5] = 0
$i_ret = I_CON.new(1,[$i_valstack[$i_valstack_base + 4],$i_valstack[$i_valstack_base + 5],$i_valstack[$i_valstack_base + 1]],nil,nil)
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
end
$_idris__123__123_Main_46_rle17_125_18_125__1 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 7] = $i_ret
$i_valstack[$i_valstack_base + 7] = I_CON.new(1,[$i_valstack[$i_valstack_base + 1],$i_valstack[$i_valstack_base + 7]],nil,nil)
$i_valstack[$i_valstack_base + 8] = 0
$i_ret = I_CON.new(1,[$i_valstack[$i_valstack_base + 7],$i_valstack[$i_valstack_base + 8],$i_valstack[$i_valstack_base]],nil,nil)
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
$_idris__123__123_Main_46_rle17_125_18_125__0 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 10] = $i_ret
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 7]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 8]
$i_valstack[$i_valstack_top + 2] = $i_valstack[$i_valstack_base + 9]
$i_valstack[$i_valstack_top + 3] = $i_valstack[$i_valstack_base + 10]
$i_valstack[$i_valstack_top + 4] = $i_valstack[$i_valstack_base + 5]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 5
i_CALL($_idris__123__123_Main_46_rle17_125_18_125__1,[oldbase,myoldbase])
i_CALL($_idris_Prelude_46_Vect_46__43__43_,[myoldbase])
end
$_idris__123__123_Main_46_rle17_125_18_125_ = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 4
case $i_valstack[$i_valstack_base + 2].tag
when 1
$i_valstack[$i_valstack_base + 7] = nil
$i_valstack[$i_valstack_base + 8] = nil
$i_valstack[$i_valstack_base + 9] = nil
$i_valstack[$i_valstack_base + 10] = nil
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 10]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 4]
$i_valstack[$i_valstack_top + 2] = $i_valstack[$i_valstack_base + 1]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 3
i_CALL($_idris__123__123_Main_46_rle17_125_18_125__0,[oldbase,myoldbase])
i_CALL($_idris_Prelude_46_Vect_46_replicate,[myoldbase])
when 0
$i_valstack[$i_valstack_base + 7] = 1
$i_valstack[$i_valstack_base + 7] = $i_valstack[$i_valstack_base + 4] + $i_valstack[$i_valstack_base + 7]
$i_ret = I_CON.new(1,[$i_valstack[$i_valstack_base + 5],$i_valstack[$i_valstack_base + 7],$i_valstack[$i_valstack_base + 1]],nil,nil)
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
end
$_idris__123_Main_46_compress20_125__0 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 7] = $i_ret
$i_valstack[$i_valstack_base + 7] = $i_valstack[$i_valstack_base + 5].concat($i_valstack[$i_valstack_base + 7])
$i_ret = $i_valstack[$i_valstack_base + 6] + $i_valstack[$i_valstack_base + 7]
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
$_idris__123_Main_46_compress20_125_ = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 5
case $i_valstack[$i_valstack_base + 2].tag
when 1
i_PROJECT($i_valstack[$i_valstack_base + 2],3,3)
$i_valstack[$i_valstack_base + 6] = 1
$i_valstack[$i_valstack_base + 6] = $i_valstack[$i_valstack_base + 4] + $i_valstack[$i_valstack_base + 6]
$i_valstack[$i_valstack_base + 6] = $i_valstack[$i_valstack_base + 6].to_s()
$i_valstack[$i_valstack_base + 7] = nil
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 7]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 3]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 2
i_CALL($_idris__123_Main_46_compress20_125__0,[oldbase,myoldbase])
i_CALL($_idris_Main_46_compress,[myoldbase])
when 0
$i_ret = ""
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
end
$_idris__123_Prelude_46_Strings_46_strM25_125_ = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 4
case $i_valstack[$i_valstack_base + 1].tag
when 0
$i_valstack[$i_valstack_base + 2] = nil
$i_valstack[$i_valstack_base + 3] = nil
$i_valstack[$i_valstack_base + 4] = $i_valstack[$i_valstack_base][0]
$i_valstack[$i_valstack_base + 5] = $i_valstack[$i_valstack_base].slice(1,$i_valstack[$i_valstack_base].length - 1)
$i_valstack[$i_valstack_base + 4] = I_CON.new(1,[$i_valstack[$i_valstack_base + 4],$i_valstack[$i_valstack_base + 5]],nil,nil)
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 2]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 3]
$i_valstack[$i_valstack_top + 2] = $i_valstack[$i_valstack_base + 4]
i_SLIDE(3)
$i_valstack_top = $i_valstack_base + 3
i_CALL($_idris_really_95_believe_95_me,[oldbase])
when 1
$i_valstack[$i_valstack_base + 2] = nil
$i_valstack[$i_valstack_base + 3] = nil
$i_valstack[$i_valstack_base + 4] = $i_CON_0
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 2]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 3]
$i_valstack[$i_valstack_top + 2] = $i_valstack[$i_valstack_base + 4]
i_SLIDE(3)
$i_valstack_top = $i_valstack_base + 3
i_CALL($_idris_really_95_believe_95_me,[oldbase])
end
end
$_idris__123_Prelude_46_Strings_46_unpack27_125__0 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 4] = $i_ret
$i_ret = I_CON.new(1,[$i_valstack[$i_valstack_base + 2],$i_valstack[$i_valstack_base + 4]],nil,nil)
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
$_idris__123_Prelude_46_Strings_46_unpack27_125_ = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 3
case $i_valstack[$i_valstack_base + 1].tag
when 1
i_PROJECT($i_valstack[$i_valstack_base + 1],2,2)
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 3]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 1
i_CALL($_idris__123_Prelude_46_Strings_46_unpack27_125__0,[oldbase,myoldbase])
i_CALL($_idris_Prelude_46_Strings_46_unpack,[myoldbase])
when 0
$i_ret = $i_CON_0
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
end
$_idris_Prelude_46_Vect_46_reverse_58_reverse_39__58_0 = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 10
case $i_valstack[$i_valstack_base + 8].tag
when 1
i_PROJECT($i_valstack[$i_valstack_base + 8],9,2)
$i_valstack[$i_valstack_base + 11] = nil
$i_valstack[$i_valstack_base + 12] = nil
$i_valstack[$i_valstack_base + 13] = nil
$i_valstack[$i_valstack_base + 14] = nil
$i_valstack[$i_valstack_base + 15] = nil
$i_valstack[$i_valstack_base + 16] = nil
$i_valstack[$i_valstack_base + 17] = I_CON.new(1,[$i_valstack[$i_valstack_base + 9],$i_valstack[$i_valstack_base + 6]],nil,nil)
$i_valstack[$i_valstack_base + 18] = nil
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 11]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 12]
$i_valstack[$i_valstack_top + 2] = $i_valstack[$i_valstack_base + 13]
$i_valstack[$i_valstack_top + 3] = $i_valstack[$i_valstack_base + 14]
$i_valstack[$i_valstack_top + 4] = $i_valstack[$i_valstack_base + 15]
$i_valstack[$i_valstack_top + 5] = $i_valstack[$i_valstack_base + 16]
$i_valstack[$i_valstack_top + 6] = $i_valstack[$i_valstack_base + 17]
$i_valstack[$i_valstack_top + 7] = $i_valstack[$i_valstack_base + 18]
$i_valstack[$i_valstack_top + 8] = $i_valstack[$i_valstack_base + 10]
i_SLIDE(9)
$i_valstack_top = $i_valstack_base + 9
i_CALL($_idris_Prelude_46_Vect_46_reverse_58_reverse_39__58_0,[oldbase])
when 0
$i_valstack[$i_valstack_base + 9] = nil
$i_valstack[$i_valstack_base + 10] = nil
$i_valstack[$i_valstack_base + 11] = nil
$i_valstack[$i_valstack_base + 12] = nil
$i_valstack[$i_valstack_base + 13] = nil
$i_valstack[$i_valstack_base + 14] = nil
$i_valstack[$i_valstack_base + 15] = nil
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 9]
$i_valstack[$i_valstack_top + 1] = $i_valstack[$i_valstack_base + 10]
$i_valstack[$i_valstack_top + 2] = $i_valstack[$i_valstack_base + 11]
$i_valstack[$i_valstack_top + 3] = $i_valstack[$i_valstack_base + 12]
$i_valstack[$i_valstack_top + 4] = $i_valstack[$i_valstack_base + 13]
$i_valstack[$i_valstack_top + 5] = $i_valstack[$i_valstack_base + 14]
$i_valstack[$i_valstack_top + 6] = $i_valstack[$i_valstack_base + 15]
$i_valstack[$i_valstack_top + 7] = $i_valstack[$i_valstack_base + 6]
i_SLIDE(8)
$i_valstack_top = $i_valstack_base + 8
i_CALL($_idris_Prelude_46_Vect_46_reverse_39__95_lemma_95_1,[oldbase])
end
end
$_idris_Decidable_46_Equality_46__64_Decidable_46_Equality_46_DecEq_36_Char_58__33_decEq_58_0_0 = Proc.new do |oldbase,myoldbase|
$i_valstack[$i_valstack_base + 2] = $i_ret
case $i_valstack[$i_valstack_base + 2].tag
when 0
$i_ret = $i_CON_1
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
when 1
$i_ret = $i_CON_0
$i_valstack_top = $i_valstack_base
$i_valstack_base = oldbase
end
end
$_idris_Decidable_46_Equality_46__64_Decidable_46_Equality_46_DecEq_36_Char_58__33_decEq_58_0 = Proc.new do |oldbase|
myoldbase = 0
$i_valstack_top += 1
$i_valstack[$i_valstack_base + 2] = ($i_valstack[$i_valstack_base] == $i_valstack[$i_valstack_base + 1])?(1):(0)
$i_valstack[$i_valstack_top] = $i_valstack[$i_valstack_base + 2]
myoldbase = $i_valstack_base
$i_valstack_base = $i_valstack_top
$i_valstack_top += 1
i_CALL($_idris_Decidable_46_Equality_46__64_Decidable_46_Equality_46_DecEq_36_Char_58__33_decEq_58_0_0,[oldbase,myoldbase])
i_CALL($_idris_Prelude_46_Classes_46_intToBool,[myoldbase])
end
$i_CON_0 = I_CON.new(0,[],nil,nil)
$i_CON_1 = I_CON.new(1,[],nil,nil)
main = Proc.new do ||
vm = I_VM.new()
i_SCHED(vm)
$_idris__123_runMain0_125_.call(0)
while $i_callstack.length > 0
func = $i_callstack.pop()
args = $i_callstack.pop()
func.call(*args)
end
end
main.call()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment