hello| define split<1> as [ set {} -> list| set '' -> word| set 0 -> i| do [ do [ set variable list + {variable word;} -> list| set '' -> word| ] else [ set variable word + argument #1{variable i} -> word| ] if argument #1{variable i} = ' '| set variable i + 1 -> i| ] until variable i = do len| do skip else set variable list + {variable word;} -> list if variable word = ''| return variable list| ]| define is_number<1> as [ set '0123456789' -> numbers| set 0 -> i| do [ set 0 -> j| do [ do skip else return false if argument #1{variable i} = variable numbers{variable j}| set variable j + 1 -> j| ] until variable j = do len| set variable i + 1 -> i| ] until variable i = do len| return true| ]| define calc<3> as [ do return argument #2 + argument #3 if argument #1 = '+'| return 'error'| ]| define unfold<1> as [ do return 'error' if do len = 0| set {} -> middle| set 1 -> i| do [ set variable middle + {argument #1{variable i};} -> middle| set variable i + 1 -> i| ] until variable i = do len - 1| do return 'error' if do len = 0| do [ set variable middle{0} -> middle| do set do int -> n1 else return 'error' if do "is_number"| ] else set do "unfold" -> n1 if do len = 1| do set do int-1};> -> n2 else return 'error' if do "is_number"-1};>| return do "calc"| ]| set do input<':';> -> x| set do "split" -> list| do print;>| goodbye|