RosettaCodeData/Task/Fibonacci-sequence/Haskell/fibonacci-sequence-17.hs

18 lines
468 B
Haskell
Raw Permalink Normal View History

2025-02-27 18:35:13 -05:00
import Data.Ratio (numerator)
2024-07-13 15:19:22 -07:00
2025-02-27 18:35:13 -05:00
infixl 7 *.
(*.) :: Num a => a -> [a] -> [a]
x *. (p:ps) = x*p : x*.ps
2024-07-13 15:19:22 -07:00
2025-02-27 18:35:13 -05:00
instance Num a => Num [a] where
negate = map negate
(+) = zipWith (+)
(*) (p:ps) (q:qs) = p*q : ((p*.qs) + ps*(q:qs))
fromInteger n = fromInteger n:repeat 0
2024-07-13 15:19:22 -07:00
2025-02-27 18:35:13 -05:00
instance (Eq a, Fractional a) => Fractional [a] where
(/) (0:ps) (0:qs) = ps/qs
(/) (p:ps) (q:qs) = let r=p/q in r : (ps - r*.qs)/(q:qs)
2024-07-13 15:19:22 -07:00
2025-02-27 18:35:13 -05:00
fromRational q = fromRational q:repeat 0