Might be cool to just overload in the function body instead of at the top level:
fac :: Int -> Int
(0) => 1
(n) => n * fac (n-1) fac :: Int -> Int
(0) => 1
(n) => n * fac (n-1) fac :: Int -> Int
fac x = case x of
0 -> 1
n -> n * fac (n-1)
or even {-# LANGUAGE LambdaCase #-}
fac :: Int -> Int
fac = \case
0 -> 1
n -> n * fac (n-1) fac :: Int -> Int
fac(0) => 1
fac(n) => n * fac(n-1)OP's first four words: "The thing about syntax".
The differences may be miniscule. They are syntactic. "Might be cool to" have this other syntax. You're just belaboring the obvious.