24 lines
592 B
Plaintext
24 lines
592 B
Plaintext
(de halfAdder (A B) #> (Carry . Sum)
|
|
(cons
|
|
(and A B)
|
|
(xor A B) ) )
|
|
|
|
(de fullAdder (A B C) #> (Carry . Sum)
|
|
(let (Ha1 (halfAdder C A) Ha2 (halfAdder (cdr Ha1) B))
|
|
(cons
|
|
(or (car Ha1) (car Ha2))
|
|
(cdr Ha2) ) ) )
|
|
|
|
(de 4bitsAdder (A4 A3 A2 A1 B4 B3 B2 B1) #> (V S4 S3 S2 S1)
|
|
(let
|
|
(Fa1 (fullAdder A1 B1)
|
|
Fa2 (fullAdder A2 B2 (car Fa1))
|
|
Fa3 (fullAdder A3 B3 (car Fa2))
|
|
Fa4 (fullAdder A4 B4 (car Fa3)) )
|
|
(list
|
|
(car Fa4)
|
|
(cdr Fa4)
|
|
(cdr Fa3)
|
|
(cdr Fa2)
|
|
(cdr Fa1) ) ) )
|