Ethiopian multiplication: Difference between revisions
m
→Haskell :: Using monoid mappend
(→{{header|TypeScript}}: Standard functions are applied to format numbers.) |
|||
Line 2,585:
----------------- ETHIOPIAN MULTIPLICATION ---------------
ethMult :: (Monoid m) => Int -> m -> m
ethMult n m =
foldr addedWhereOdd mempty $
zip (unfoldr half n) $ iterate (join (<>)) m
half :: Integral b => b -> Maybe (b, b)
addedWhereOdd (d, x) a▼
| 0 /= d = a <> x▼
addedWhereOdd :: (Eq a, Num a, Semigroup p) => (a, p) -> p -> p
| otherwise = a▼
--------------------------- TEST -------------------------
|