Obsah
Vytvořte funkci, která najde největší hodnotu uzlu v binárním stromu. Uvažujte různé definice datového typu „strom“.
Definujte datový typ Expr, reprezentující uzly abstraktního syntaktického stromu pro výraz s operátory Add (+), Sub (-), Mul (*), Div (/) a celočíselnými konstantami Num jako operandy.
Vytvořte funkci, která provede vyhodnocení výrazu zapsaného ve formě abstraktního syntaktického stromu z předchozí úlohy. Pro testování použijte například následující výrazy:
> ex1, ex2, ex3:: Expr > ex1 = Add (Mul (Num 2) (Num 3)) (Num 5) -- 2 * 3 + 5 > ex2 = Add (Num 2) (Mul (Num 3) (Num 5)) -- 2 + 3 * 5 > ex3 = Mul (Add (Num 2) (Num 3)) (Num 5) -- (2 + 3) * 5 > ex4 = Add (Add (Num 2) (Num 3)) (Num 5) -- 2 + 3 + 5 > ex5 = Add (Num 2) (Add (Num 3) (Num 5)) -- 2 + (3 + 5) > ex6 = Div (Num 5) (Sub (Num 3) (Num 3)) -- 5 / (3 - 3) = error