なるほど、つまり関数適用はガードで。
それ以外はcaseで良いと?

riverse :: String -> String
riverse list = case (list) of
[] -> []
(x:xs) -> riverse xs ++ [x]
xRiverse :: String -> String -> Bool
xRiverse list rlist = case (list) of
[] -> if (rlist == [])
then True
else False
(x:xs) -> if (list == (riverse rlist))
then True
else False

では何故xRiverseの(list == (riverse rlist))は使えるのでしょうか?