好的,所以我在Haskell中有这个代码:
data Bigit = O | I deriving (Show,Eq)
add x y = reverse $ addC O (reverse x) (reverse y)
addC O [] [] = []
addC I [] [] = [I]
addC carry [] r = addC carry [O] r
addC carry l [] = addC carry l [O]
addC carry (left:leftOver) (right:rightOver) = sumBigit :(addC newCarry leftOver
rightOver)
where
(sumBigit,newCarry)
= case (left,right,left) of
(O,O,O) -> (O,O)
(O,I,O) -> (I,O)
(I,O,O) -> (I,O)
(I,I,O) -> (O,I)
(O,O,I) …Run Code Online (Sandbox Code Playgroud) haskell ×1