PROBLEM:
solution (Var "X") []= "X"
solution (App "f" []) [] = "f"
solution (App "f" [Var "X", App "f" [] ] ) [] = "f(X,f)"
solution (App "f" [Var "X", App "f" [] ] ) "abc" = "f(X,f)abc"
ROZWIĄZANIE:
module Solution where
data Term = App String [Term] | Var String deriving (Read)
solu :: String -> Term -> String
solu str (Var name) = name ++ str
solu str (App name []) = name ++ str
solu str (App name (x:lst)) =
name ++ "(" ++
(solu (foldr (\a -> \b -> "," ++ (solu b a)) (")" ++ str) lst) x)
solution term str = solu str term