Реализация head/2
это просто:
head([X | _], X).
Обратите внимание, что подчеркивание здесь означает "ноль или более элементов, которые нас не волнуют".
Нет необходимости выделять случай, когда в списке есть только один элемент (а затем использовать вырез).