lambdaway
::
exponent
5
|
list
|
login
|
load
|
|
_h1 exponent a{sup b} _h2 C {pre int expo(int a, int b) '{ int r = 1; while (b >= 0) { r = (b%2==1)? r*a : r; b = b // 2; a = a*a; } return r; } } _h2 lambdatalk {pre '{def quickexp {def quickexp.r {lambda {:a :b :r} {if {= :b 0} then :r else {quickexp.r {* :a :a} {floor {/ :b 2}} {if {= {% :b 2} 0} then :r else {* :r :a}}} }}} {lambda {:a :b} {quickexp.r :a :b 1}}} -> {def quickexp {def quickexp.r {lambda {:a :b :r} {if {= :b 0} then :r else {quickexp.r {* :a :a} {floor {/ :b 2}} {if {= {% :b 2} 0} then :r else {* :r :a}}} }}} {lambda {:a :b} {quickexp.r :a :b 1}}} '{quickexp 2 8} -> {quickexp 2 8} '{quickexp 2 100} -> {quickexp 2 100} }
lambdaway v.20211111