

<hanoi #n #from #to #tmp>
	  <is #n 1>
	  <print #from "->" #to>
	|
	  <let #n1 = #n - 1>
	  <hanoi #n1 #from #tmp #to>
	  <print #from "->" #to>
	  <hanoi #n1 #tmp #to #from>
	;

? <hanoi 3 a b c>;

