Without looking at the definitions from the standard prelude, define the following library functions on lists using recursion.
a. Decide if all logical values in a list are True:
$$
\text { and :: [Bool] } \rightarrow \text { Bool }
$$
b. Concatenate a list of lists:
$$
\text { concat :: [[a]] } \rightarrow[a]
$$
c. Produce a list with $n$ identical elements:
$$
\text { replicate :: Int } \rightarrow \text { a } \rightarrow \text { [a] }
$$
d. Select the nth element of a list:
$$
\text { (!!) :: [a] } \rightarrow \text { Int } \rightarrow a
$$
e. Decide if a value is an element of a list:
$$
\text { elem :: Eq a } \Rightarrow a \rightarrow[a] \rightarrow \text { Bool }
$$
Note: most of these functions are defined in the prelude using other library functions rather than using explicit recursion, and are generic functions rather than being specific to the type of lists.