Skip to content

Instantly share code, notes, and snippets.

@davidnuon
Created November 8, 2015 03:15
Show Gist options
  • Save davidnuon/9da292b33bf11518082b to your computer and use it in GitHub Desktop.
Save davidnuon/9da292b33bf11518082b to your computer and use it in GitHub Desktop.
Some Haskell Functions on Polynomials
module Main where
type Zahlen = Float
data Term degree coefficient = Term Zahlen Zahlen deriving (Show, Eq)
type Polynomial = [Term Zahlen Zahlen]
zeroPolynomial = Term 0 0
pDerive (Term 0 n) = zeroPolynomial
pDerive (Term d n) = Term (d - 1) (n * d)
pIntegrate (Term d n) = Term (d + 1) (n / (d + 1))
derive :: Polynomial -> Polynomial
derive ps = map pDerive ps
integrate :: Polynomial -> (Zahlen -> Polynomial)
integrate ps = (\k -> (map pIntegrate ps) ++ (makePolynomial 0 k))
evalTerm x (Term 0 n) = n
evalTerm x (Term d n) = n*(x**d)
evalPoly x ps = foldl (+) 0 $ map (evalTerm x) ps
makePolynomial d n = [Term d n]
main = putStrLn $ show $ evalPoly 10 $ ( integrate (makePolynomial 2 1) 10 )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment