From 3aeae3617e954b189d56eab7037b222e485e9e85 Mon Sep 17 00:00:00 2001 From: Pal Kerecsenyi Date: Wed, 8 May 2024 10:18:41 +0100 Subject: [PATCH] add impl --- polynom.hs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/polynom.hs b/polynom.hs index ae52e02..bb88b0b 100644 --- a/polynom.hs +++ b/polynom.hs @@ -1,5 +1,6 @@ data Atree = Number Int | Variable String | Plus Atree Atree | Minus Atree | Times Atree Atree +-- (5 - x) * (2y - (x + 7))) t :: Atree t = Times @@ -14,4 +15,8 @@ type Polynomial = [Monomial] type Monomial = (Int, [String]) polynomial :: Atree -> Polynomial -polynomial = undefined +polynomial (Number n) = [(n, [])] +polynomial (Variable v) = [(1, [v])] +polynomial (Plus e1 e2) = polynomial e1 ++ polynomial e2 +polynomial (Minus e) = map (\(c, xs) -> (-c, xs)) (polynomial e) +polynomial (Times e1 e2) = concatMap (\(c1, xs1) -> map (\(c2, xs2) -> (c1 * c2, xs1 ++ xs2)) (polynomial e2)) (polynomial e1)