<div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">This looks like observation typing using #! (non recursive strict let).<br>See section 9.4
 of the Clean language report.<br><br>The swap function could be written as:<br><br>swap a i j<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#! x = lookup a i<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#! y = lookup a j<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= update! (update! a i y) j x</blockquote><div><br>And as Clean allows notation like
<br><br>swap a i j<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#! x = lookup a i<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y = lookup a j<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= update! ( update! a i y ) j x<br><br>it seems that<br>&#39; let* &#39; == &#39; #! &#39;.<br></div></div>