lambdaway
::
4bit_adder2
2
|
list
|
login
|
load
|
|
_h1 [[4bit_adder]] | 8bit adder | [[nbit_adder|?view=oops5]] {center {img {@ src="http://rosettacode.org/mw/images/7/76/Xor.png" width="30%"}} {img {@ src="http://rosettacode.org/mw/images/2/20/Fulladder.png" width="30%"}} {img {@ src="http://rosettacode.org/mw/images/0/0e/4bitsadder.png" width="30%"}} } {center {b XOR | full Adder | 4 bits Adder | 8 bits Adder}} _img https://www.wolfram.com/system-modeler/industry/compact/examples/electrical-engineering/8-bit-adder/images/output1.png _p References _ul [[http://rosettacode.org/wiki/Four_bit_adder| http://rosettacode.org/wiki/Four_bit_adder]] _ul [[XOR|http://www.howtocreate.co.uk/xor.html]] _h2 1) adding booleans _p NOT, AND & OR are builtin "gates", we have to define the "XOR" gate {prewrap '{def xor {lambda {:a :b} {or {and :a {not :b}} {and :b {not :a}}}}} -> {def xor {lambda {:a :b} {or {and :a {not :b}} {and :b {not :a}}}}} } _p The halfAdder HA has two inputs [A,B] and two outputs [S,C], sum and carry {pre '{def halfAdder {lambda {:a :b} {cons {and :a :b} {xor :a :b}}}} -> {def halfAdder {lambda {:a :b} {cons {and :a :b} {xor :a :b}}}} '{halfAdder false false} // 0 + 0 -> {halfAdder false false} // (0 0) '{halfAdder false true} // 0 + 0 -> {halfAdder false true} // (0 1) '{halfAdder true false} // 0 + 0 -> {halfAdder true false} // (0 1) '{halfAdder true true} // 0 + 0 -> {halfAdder true true} // (1 0) } _p The fullAdder combines two HA with three inputs [A,B,C0] and two outputs [S,C1] {pre '{def fullAdder {lambda {:a :b :c} {{lambda {:b :ha1} {{lambda {:ha1 :ha2} {cons {or {car :ha1} {car :ha2}} {cdr :ha2}} } :ha1 {halfAdder {cdr :ha1} :b}} } :b {halfAdder :c :a}} }} -> {def fullAdder {lambda {:a :b :c} {{lambda {:b :ha1} {{lambda {:ha1 :ha2} {cons {or {car :ha1} {car :ha2}} {cdr :ha2}} } :ha1 {halfAdder {cdr :ha1} :b}} } :b {halfAdder :c :a}} }} '{fullAdder false false false} // 0 + 0 -> {fullAdder false false false} // (0 0) '{fullAdder false true false} // 0 + 1 -> {fullAdder false true false} // (0 1) '{fullAdder true false false} // 1 + 0 -> {fullAdder true false false} // (0 1) '{fullAdder true true false} // 1 + 1 -> {fullAdder true true false} // (1 0) } _h2 2) helper functions _p We need a set of functions processing translations between booleans, binary numbers and decimal numbers. {pre {def bin2bool {lambda {:b} {S.replace _ by space in {S.replace 1 by true_ in {S.replace 0 by false_ in :b}}}}} // '{bin2bool 0111} -> {bin2bool 0111} {def bool2bin {lambda {:b} {S.replace \s by in {S.replace false by 0 in {S.replace true by 1 in :b}}}}} // '{bool2bin false true true true} -> {bool2bin false true true true} {def bin2dec {def bin2dec.r {lambda {:p :r} {if {A.empty? :p} then :r else {bin2dec.r {A.rest :p} {+ {A.first :p} {* 2 :r}}}}}} {lambda {:p} {bin2dec.r {A.split :p} 0}}} // '{bin2dec 0111} -> {bin2dec 0111} {def dec2bin {def dec2bin.r {lambda {:dec} {if {= :dec 0} then 0 else {if {< :dec 2} then 1 else {dec2bin.r {floor {/ :dec 2}}}{% :dec 2} }}}} {lambda {:dec :w} {let { {:b {dec2bin.r :dec}} {:w :w} } {zpadd {- :w {W.length :b}}}:b}}} // '{dec2bin 7 4} -> {dec2bin 7 4} {def zpadd {lambda {:n} {if {= :n 0} then else 0{zpadd {- :n 1}}}}} // '{zpadd 3} -> {zpadd 3} } _h2 3) 4 bits adder from 0000 to 1111 _p The 4bitsAdder combines four fullAdders FA with nine inputs the value 0, [a0,a1,a2,a3] and [b0,b1,b2,b3] and five outputs [s0,s1,s2,s3] and v, the carry {pre '{def 4bitsAdder {lambda {:a4 :a3 :a2 :a1 :b4 :b3 :b2 :b1} {{lambda {:a4 :a3 :a2 :b4 :b3 :b2 :fa1} {{lambda {:a4 :a3 :b4 :b3 :fa1 :fa2} {{lambda {:a4 :b4 :fa1 :fa2 :fa3} {{lambda {:fa1 :fa2 :fa3 :fa4} {car :fa4} {cdr :fa4} {cdr :fa3} {cdr :fa2} {cdr :fa1} } :fa1 :fa2 :fa3 {fullAdder :a4 :b4 {car :fa3}}} } :a4 :b4 :fa1 :fa2 {fullAdder :a3 :b3 {car :fa2}}} } :a4 :a3 :b4 :b3 :fa1 {fullAdder :a2 :b2 {car :fa1}}} } :a4 :a3 :a2 :b4 :b3 :b2 {halfAdder :a1 :b1} }}} -> {def 4bitsAdder {lambda {:a4 :a3 :a2 :a1 :b4 :b3 :b2 :b1} {{lambda {:a4 :a3 :a2 :b4 :b3 :b2 :fa1} {{lambda {:a4 :a3 :b4 :b3 :fa1 :fa2} {{lambda {:a4 :b4 :fa1 :fa2 :fa3} {{lambda {:fa1 :fa2 :fa3 :fa4} {car :fa4} {cdr :fa4} {cdr :fa3} {cdr :fa2} {cdr :fa1} } :fa1 :fa2 :fa3 {fullAdder :a4 :b4 {car :fa3}}} } :a4 :b4 :fa1 :fa2 {fullAdder :a3 :b3 {car :fa2}}} } :a4 :a3 :b4 :b3 :fa1 {fullAdder :a2 :b2 {car :fa1}}} } :a4 :a3 :a2 :b4 :b3 :b2 {halfAdder :a1 :b1} }}} '{4bitsAdder false true true true // 0111 false false false true} // 0001 -> {4bitsAdder false true true true false false false true} // 1000 '{bin2dec {bool2bin {4bitsAdder {bin2bool {dec2bin 4 4}} {bin2bool {dec2bin 11 4}}}}} -> {bin2dec {bool2bin {4bitsAdder {bin2bool {dec2bin 4 4}} {bin2bool {dec2bin 11 4}}}}} '{bin2dec {bool2bin {4bitsAdder {bin2bool {dec2bin 15 4}} {bin2bool {dec2bin 15 4}}}}} -> {bin2dec {bool2bin {4bitsAdder {bin2bool {dec2bin 15 4}} {bin2bool {dec2bin 15 4}}}}} } _h2 4) 8 bits adder from 00000000 to {dec2bin 255 8} {pre '{def 8bitsAdder {lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :a1 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :b1} {{lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :fa1} {{lambda {:a8 :a7 :a6 :a5 :a4 :a3 :b8 :b7 :b6 :b5 :b4 :b3 :fa1 :fa2} {{lambda {:a8 :a7 :a6 :a5 :a4 :b8 :b7 :b6 :b5 :b4 :fa1 :fa2 :fa3} {{lambda {:a8 :a7 :a6 :a5 :b8 :b7 :b6 :b5 :fa1 :fa2 :fa3 :fa4} {{lambda {:a8 :a7 :a6 :b8 :b7 :b6 :fa1 :fa2 :fa3 :fa4 :fa5} {{lambda {:a8 :a7 :b8 :b7 :fa1 :fa2 :fa3 :fa4 :fa5 :fa6} {{lambda {:a8 :b8 :fa1 :fa2 :fa3 :fa4 :fa5 :fa6 :fa7} {{lambda {:fa1 :fa2 :fa3 :fa4 :fa5 :fa6 :fa7 :fa8} {car :fa8} {cdr :fa8} {cdr :fa7} {cdr :fa6} {cdr :fa5} {cdr :fa4} {cdr :fa3} {cdr :fa2} {cdr :fa1} } :fa1 :fa2 :fa3 :fa4 :fa5 :fa6 :fa7 {fullAdder :a8 :b8 {car :fa7}}} } :a8 :b8 :fa1 :fa2 :fa3 :fa4 :fa5 :fa6 {fullAdder :a7 :b7 {car :fa6}}} } :a8 :a7 :b8 :b7 :fa1 :fa2 :fa3 :fa4 :fa5 {fullAdder :a6 :b6 {car :fa5}}} } :a8 :a7 :a6 :b8 :b7 :b6 :fa1 :fa2 :fa3 :fa4 {fullAdder :a5 :b5 {car :fa4}}} } :a8 :a7 :a6 :a5 :b8 :b7 :b6 :b5 :fa1 :fa2 :fa3 {fullAdder :a4 :b4 {car :fa3}}} } :a8 :a7 :a6 :a5 :a4 :b8 :b7 :b6 :b5 :b4 :fa1 :fa2 {fullAdder :a3 :b3 {car :fa2}}} } :a8 :a7 :a6 :a5 :a4 :a3 :b8 :b7 :b6 :b5 :b4 :b3 :fa1 {fullAdder :a2 :b2 {car :fa1}}} } :a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 {halfAdder :a1 :b1} }}} -> {def 8bitsAdder {lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :a1 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :b1} {{lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :fa1} {{lambda {:a8 :a7 :a6 :a5 :a4 :a3 :b8 :b7 :b6 :b5 :b4 :b3 :fa1 :fa2} {{lambda {:a8 :a7 :a6 :a5 :a4 :b8 :b7 :b6 :b5 :b4 :fa1 :fa2 :fa3} {{lambda {:a8 :a7 :a6 :a5 :b8 :b7 :b6 :b5 :fa1 :fa2 :fa3 :fa4} {{lambda {:a8 :a7 :a6 :b8 :b7 :b6 :fa1 :fa2 :fa3 :fa4 :fa5} {{lambda {:a8 :a7 :b8 :b7 :fa1 :fa2 :fa3 :fa4 :fa5 :fa6} {{lambda {:a8 :b8 :fa1 :fa2 :fa3 :fa4 :fa5 :fa6 :fa7} {{lambda {:fa1 :fa2 :fa3 :fa4 :fa5 :fa6 :fa7 :fa8} {car :fa8} {cdr :fa8} {cdr :fa7} {cdr :fa6} {cdr :fa5} {cdr :fa4} {cdr :fa3} {cdr :fa2} {cdr :fa1} } :fa1 :fa2 :fa3 :fa4 :fa5 :fa6 :fa7 {fullAdder :a8 :b8 {car :fa7}}} } :a8 :b8 :fa1 :fa2 :fa3 :fa4 :fa5 :fa6 {fullAdder :a7 :b7 {car :fa6}}} } :a8 :a7 :b8 :b7 :fa1 :fa2 :fa3 :fa4 :fa5 {fullAdder :a6 :b6 {car :fa5}}} } :a8 :a7 :a6 :b8 :b7 :b6 :fa1 :fa2 :fa3 :fa4 {fullAdder :a5 :b5 {car :fa4}}} } :a8 :a7 :a6 :a5 :b8 :b7 :b6 :b5 :fa1 :fa2 :fa3 {fullAdder :a4 :b4 {car :fa3}}} } :a8 :a7 :a6 :a5 :a4 :b8 :b7 :b6 :b5 :b4 :fa1 :fa2 {fullAdder :a3 :b3 {car :fa2}}} } :a8 :a7 :a6 :a5 :a4 :a3 :b8 :b7 :b6 :b5 :b4 :b3 :fa1 {fullAdder :a2 :b2 {car :fa1}}} } :a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 {halfAdder :a1 :b1} }}} '{bin2dec {bool2bin {8bitsAdder {bin2bool {dec2bin 170 8}} {bin2bool {dec2bin 51 8}}}}} -> {bin2dec {bool2bin {8bitsAdder {bin2bool {dec2bin 170 8}} {bin2bool {dec2bin 51 8}}}}} '{bin2dec {bool2bin {8bitsAdder {bin2bool {dec2bin 128 8}} {bin2bool {dec2bin 128 8}}}}} -> {bin2dec {bool2bin {8bitsAdder {bin2bool {dec2bin 128 8}} {bin2bool {dec2bin 128 8}}}}} } _h2 5) tracing _p This is how is evaluated the {code 8bitsAdder} expression during the "abstraction" phase {pre °° {def 8bitsAdder {lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :a1 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :b1} {{lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :fa1} {{lambda {:a8 :a7 :a6 :a5 :a4 :a3 :b8 :b7 :b6 :b5 :b4 :b3 :fa1 :fa2} {{lambda {:a8 :a7 :a6 :a5 :a4 :b8 :b7 :b6 :b5 :b4 :fa1 :fa2 :fa3} {{lambda {:a8 :a7 :a6 :a5 :b8 :b7 :b6 :b5 :fa1 :fa2 :fa3 :fa4} {{lambda {:a8 :a7 :a6 :b8 :b7 :b6 :fa1 :fa2 :fa3 :fa4 :fa5} {{lambda {:a8 :a7 :b8 :b7 :fa1 :fa2 :fa3 :fa4 :fa5 :fa6} {{lambda {:a8 :b8 :fa1 :fa2 :fa3 :fa4 :fa5 :fa6 :fa7} {{lambda {:fa1 :fa2 :fa3 :fa4 :fa5 :fa6 :fa7 :fa8} {car :fa8} {cdr :fa8} {cdr :fa7} {cdr :fa6} {cdr :fa5} {cdr :fa4} {cdr :fa3} {cdr :fa2} {cdr :fa1} } :fa1 :fa2 :fa3 :fa4 :fa5 :fa6 :fa7 {fullAdder :a8 :b8 {car :fa7}}} } :a8 :b8 :fa1 :fa2 :fa3 :fa4 :fa5 :fa6 {fullAdder :a7 :b7 {car :fa6}}} } :a8 :a7 :b8 :b7 :fa1 :fa2 :fa3 :fa4 :fa5 {fullAdder :a6 :b6 {car :fa5}}} } :a8 :a7 :a6 :b8 :b7 :b6 :fa1 :fa2 :fa3 :fa4 {fullAdder :a5 :b5 {car :fa4}}} } :a8 :a7 :a6 :a5 :b8 :b7 :b6 :b5 :fa1 :fa2 :fa3 {fullAdder :a4 :b4 {car :fa3}}} } :a8 :a7 :a6 :a5 :a4 :b8 :b7 :b6 :b5 :b4 :fa1 :fa2 {fullAdder :a3 :b3 {car :fa2}}} } :a8 :a7 :a6 :a5 :a4 :a3 :b8 :b7 :b6 :b5 :b4 :b3 :fa1 {fullAdder :a2 :b2 {car :fa1}}} } :a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 {halfAdder :a1 :b1} }}} -> {def 8bitsAdder {lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :a1 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :b1} {{lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :fa1} {{lambda {:a8 :a7 :a6 :a5 :a4 :a3 :b8 :b7 :b6 :b5 :b4 :b3 :fa1 :fa2} {{lambda {:a8 :a7 :a6 :a5 :a4 :b8 :b7 :b6 :b5 :b4 :fa1 :fa2 :fa3} {{lambda {:a8 :a7 :a6 :a5 :b8 :b7 :b6 :b5 :fa1 :fa2 :fa3 :fa4} {{lambda {:a8 :a7 :a6 :b8 :b7 :b6 :fa1 :fa2 :fa3 :fa4 :fa5} {{lambda {:a8 :a7 :b8 :b7 :fa1 :fa2 :fa3 :fa4 :fa5 :fa6} {{lambda {:a8 :b8 :fa1 :fa2 :fa3 :fa4 :fa5 :fa6 :fa7} {_LAMB_0 :fa1 :fa2 :fa3 :fa4 :fa5 :fa6 :fa7 {fullAdder :a8 :b8 {car :fa7}}} } :a8 :b8 :fa1 :fa2 :fa3 :fa4 :fa5 :fa6 {fullAdder :a7 :b7 {car :fa6}}} } :a8 :a7 :b8 :b7 :fa1 :fa2 :fa3 :fa4 :fa5 {fullAdder :a6 :b6 {car :fa5}}} } :a8 :a7 :a6 :b8 :b7 :b6 :fa1 :fa2 :fa3 :fa4 {fullAdder :a5 :b5 {car :fa4}}} } :a8 :a7 :a6 :a5 :b8 :b7 :b6 :b5 :fa1 :fa2 :fa3 {fullAdder :a4 :b4 {car :fa3}}} } :a8 :a7 :a6 :a5 :a4 :b8 :b7 :b6 :b5 :b4 :fa1 :fa2 {fullAdder :a3 :b3 {car :fa2}}} } :a8 :a7 :a6 :a5 :a4 :a3 :b8 :b7 :b6 :b5 :b4 :b3 :fa1 {fullAdder :a2 :b2 {car :fa1}}} } :a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 {halfAdder :a1 :b1} }}} -> {def 8bitsAdder {lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :a1 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :b1} {{lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :fa1} {{lambda {:a8 :a7 :a6 :a5 :a4 :a3 :b8 :b7 :b6 :b5 :b4 :b3 :fa1 :fa2} {{lambda {:a8 :a7 :a6 :a5 :a4 :b8 :b7 :b6 :b5 :b4 :fa1 :fa2 :fa3} {{lambda {:a8 :a7 :a6 :a5 :b8 :b7 :b6 :b5 :fa1 :fa2 :fa3 :fa4} {{lambda {:a8 :a7 :a6 :b8 :b7 :b6 :fa1 :fa2 :fa3 :fa4 :fa5} {{lambda {:a8 :a7 :b8 :b7 :fa1 :fa2 :fa3 :fa4 :fa5 :fa6} {_LAMB_1 :a8 :b8 :fa1 :fa2 :fa3 :fa4 :fa5 :fa6 {fullAdder :a7 :b7 {car :fa6}}} } :a8 :a7 :b8 :b7 :fa1 :fa2 :fa3 :fa4 :fa5 {fullAdder :a6 :b6 {car :fa5}}} } :a8 :a7 :a6 :b8 :b7 :b6 :fa1 :fa2 :fa3 :fa4 {fullAdder :a5 :b5 {car :fa4}}} } :a8 :a7 :a6 :a5 :b8 :b7 :b6 :b5 :fa1 :fa2 :fa3 {fullAdder :a4 :b4 {car :fa3}}} } :a8 :a7 :a6 :a5 :a4 :b8 :b7 :b6 :b5 :b4 :fa1 :fa2 {fullAdder :a3 :b3 {car :fa2}}} } :a8 :a7 :a6 :a5 :a4 :a3 :b8 :b7 :b6 :b5 :b4 :b3 :fa1 {fullAdder :a2 :b2 {car :fa1}}} } :a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 {halfAdder :a1 :b1} }}} -> {def 8bitsAdder {lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :a1 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :b1} {{lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :fa1} {{lambda {:a8 :a7 :a6 :a5 :a4 :a3 :b8 :b7 :b6 :b5 :b4 :b3 :fa1 :fa2} {{lambda {:a8 :a7 :a6 :a5 :a4 :b8 :b7 :b6 :b5 :b4 :fa1 :fa2 :fa3} {{lambda {:a8 :a7 :a6 :a5 :b8 :b7 :b6 :b5 :fa1 :fa2 :fa3 :fa4} {{lambda {:a8 :a7 :a6 :b8 :b7 :b6 :fa1 :fa2 :fa3 :fa4 :fa5} {_LAMB_2 :a8 :a7 :b8 :b7 :fa1 :fa2 :fa3 :fa4 :fa5 {fullAdder :a6 :b6 {car :fa5}}} } :a8 :a7 :a6 :b8 :b7 :b6 :fa1 :fa2 :fa3 :fa4 {fullAdder :a5 :b5 {car :fa4}}} } :a8 :a7 :a6 :a5 :b8 :b7 :b6 :b5 :fa1 :fa2 :fa3 {fullAdder :a4 :b4 {car :fa3}}} } :a8 :a7 :a6 :a5 :a4 :b8 :b7 :b6 :b5 :b4 :fa1 :fa2 {fullAdder :a3 :b3 {car :fa2}}} } :a8 :a7 :a6 :a5 :a4 :a3 :b8 :b7 :b6 :b5 :b4 :b3 :fa1 {fullAdder :a2 :b2 {car :fa1}}} } :a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 {halfAdder :a1 :b1} }}} -> {def 8bitsAdder {lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :a1 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :b1} {{lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :fa1} {{lambda {:a8 :a7 :a6 :a5 :a4 :a3 :b8 :b7 :b6 :b5 :b4 :b3 :fa1 :fa2} {{lambda {:a8 :a7 :a6 :a5 :a4 :b8 :b7 :b6 :b5 :b4 :fa1 :fa2 :fa3} {{lambda {:a8 :a7 :a6 :a5 :b8 :b7 :b6 :b5 :fa1 :fa2 :fa3 :fa4} {_LAMB_3 :a8 :a7 :a6 :b8 :b7 :b6 :fa1 :fa2 :fa3 :fa4 {fullAdder :a5 :b5 {car :fa4}}} } :a8 :a7 :a6 :a5 :b8 :b7 :b6 :b5 :fa1 :fa2 :fa3 {fullAdder :a4 :b4 {car :fa3}}} } :a8 :a7 :a6 :a5 :a4 :b8 :b7 :b6 :b5 :b4 :fa1 :fa2 {fullAdder :a3 :b3 {car :fa2}}} } :a8 :a7 :a6 :a5 :a4 :a3 :b8 :b7 :b6 :b5 :b4 :b3 :fa1 {fullAdder :a2 :b2 {car :fa1}}} } :a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 {halfAdder :a1 :b1} }}} -> {def 8bitsAdder {lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :a1 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :b1} {{lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :fa1} {{lambda {:a8 :a7 :a6 :a5 :a4 :a3 :b8 :b7 :b6 :b5 :b4 :b3 :fa1 :fa2} {{lambda {:a8 :a7 :a6 :a5 :a4 :b8 :b7 :b6 :b5 :b4 :fa1 :fa2 :fa3} {_LAMB_4 :a8 :a7 :a6 :a5 :b8 :b7 :b6 :b5 :fa1 :fa2 :fa3 {fullAdder :a4 :b4 {car :fa3}}} } :a8 :a7 :a6 :a5 :a4 :b8 :b7 :b6 :b5 :b4 :fa1 :fa2 {fullAdder :a3 :b3 {car :fa2}}} } :a8 :a7 :a6 :a5 :a4 :a3 :b8 :b7 :b6 :b5 :b4 :b3 :fa1 {fullAdder :a2 :b2 {car :fa1}}} } :a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 {halfAdder :a1 :b1} }}} -> {def 8bitsAdder {lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :a1 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :b1} {{lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :fa1} {{lambda {:a8 :a7 :a6 :a5 :a4 :a3 :b8 :b7 :b6 :b5 :b4 :b3 :fa1 :fa2} {_LAMB_5 :a8 :a7 :a6 :a5 :a4 :b8 :b7 :b6 :b5 :b4 :fa1 :fa2 {fullAdder :a3 :b3 {car :fa2}}} } :a8 :a7 :a6 :a5 :a4 :a3 :b8 :b7 :b6 :b5 :b4 :b3 :fa1 {fullAdder :a2 :b2 {car :fa1}}} } :a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 {halfAdder :a1 :b1} }}} -> {def 8bitsAdder {lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :a1 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :b1} {{lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :fa1} {_LAMB_6 :a8 :a7 :a6 :a5 :a4 :a3 :b8 :b7 :b6 :b5 :b4 :b3 :fa1 {fullAdder :a2 :b2 {car :fa1}}} } :a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 {halfAdder :a1 :b1} }}} -> {def 8bitsAdder {lambda {:a8 :a7 :a6 :a5 :a4 :a3 :a2 :a1 :b8 :b7 :b6 :b5 :b4 :b3 :b2 :b1} {_LAMB_7 :a8 :a7 :a6 :a5 :a4 :a3 :a2 :b8 :b7 :b6 :b5 :b4 :b3 :b2 {halfAdder :a1 :b1} }}} -> {def 8bitsAdder _LAMB_8} -> 8bitsAdder °°} _p During the "application" phase the call {code '{8bitsAdder ...}} will start a sequence of height lambda calls, {code [_LAMB_8, _LAMB_7, ..., _LAMB_1]}, each in its own space, out of the wiki page's space.
lambdaway v.20211111