Consider a function safetail :: [a] $\rightarrow$ [a] that behaves in the same way as tail except that it maps the empty list to itself rather than producing an error. Using tail and the function null :: [a] $\rightarrow$ Bool that decides if a list is empty or not, define safetail using:
a. a conditional expression;
b. guarded equations;
c. pattern matching.