I wrote a little Haskell program to find the area of a triangle, primarily to practice custom types, but it keeps throwing the following error on compile:
areafinder.hs:7:4:
Couldn't match expected type `Triangle' against inferred type `m b'
In a stmt of a 'do' expression: putStr "Base: "
In the expression:
do { putStr "Base: ";
baseStr <- getLine;
putStr "Height: ";
heightStr <- getLine;
.... }
In the definition of `getTriangle':
getTriangle = do { putStr "Base: ";
baseStr <- getLine;
putStr "Height: ";
.... }
I'm not sure where 'm b' comes from, so I'm at a loss here. Why is it throwing this error, and what can I do to fix it? Here is my code:
module Main where
data Triangle = Triangle Double Double -- base, height
getTriangle :: Triangle
getTriangle = do
putStr "Base: "
baseStr <- getLine
putStr "Height: "
heightStr <- getLine
let base = read baseStr :: Double
let height = read heightStr :: Double
Triangle base height
calcTriangle :: Triangle -> Double
calcTriangle (Triangle base height) = base * height
main = putStrLn ("Area = " ++ show (calcTriangle getTriangle))
Thanks. :)