Tiny Ollibot Example Server - Call-by-need functions

Doubling a number in binary representation

Least significant bit first; # is end-of-tape marker

r1 : double • 0 ->> 0 • copy0.
r2 : double • 1 ->> 0 • copy1.
r3 : copy0 • 0 ->> 0 • copy0.
r4 : copy0 • 1 ->> 0 • copy1.
r5 : copy0 • # ->> 0 • #.
r6 : copy1 • 0 ->> 1 • copy0.
r7 : copy1 • 1 ->> 1 • copy1.
r8 : copy1 • # ->> 1 • #.
%trace * 
  # • double • 1 • 1 • 0 • 1 • #.
#double1101#
#0copy1101#
#01copy101#
#011copy01#
#0110copy1#
#01101#