Рекурсия: проверить, является ли X одноуровневым списком

Возникают трудности с реализацией двух функций:

1) first(X) проверяет, является ли X одноуровневым списком.

2) second(A,B,X) вставляет в список X новый элемент A перед первым вхождением элемента B, если B входит в X.

Буду признателен за помощь.