Four bit adder: Difference between revisions
Content added Content deleted
m (J: clarify wording) |
(→{{header|Haskell}}: replace adder function with one with 4 visible fulladders) |
||
Line 724: | Line 724: | ||
xor a b = uncurry nand. (nand a &&& nand b) $ nand a b</lang> |
xor a b = uncurry nand. (nand a &&& nand b) $ nand a b</lang> |
||
Adder circuits: |
Adder circuits: |
||
<lang haskell>halfAdder = |
<lang haskell>halfAdder = uncurry band &&& uncurry xor |
||
fullAdder (c, a, b) = (\(cy,s) -> first (bor cy) $ halfAdder (b, s)) $ halfAdder (c, a) |
fullAdder (c, a, b) = (\(cy,s) -> first (bor cy) $ halfAdder (b, s)) $ halfAdder (c, a) |
||
adder4 as = foldr (\(f,a,b) (cy,bs) -> second(:bs) $ f (cy,a,b)) (0,[]). zip3 (replicate 4 fullAdder) as</lang> |
|||
Example using add |
Example using add |