Если ваш учитель использует новые функциональные интерфейсы Java 8, он, вероятно, хочет, чтобы вы использовали лямбды Java 8. Вот краткое руководство.
JaredPar является правильным, F# не имеет синтаксической формы, которую Haskell делает здесь.
Форма F# главным образом полезна для раскрытия дизъюнктных объединений единственного случая или для определения функций с неполными соответствиями (как Ваш 'автомобильный' пример, который перестал работать в пустом списке). Это - просто последствие того, что практически вся привязка имени на языке сделана через шаблоны; эта синтаксическая форма (определяющий функцию с помощью шаблонов на аргументах) не часто слишком полезна на практике по точной причине, которую Вы описали.
Я думаю, что Haskell сделал много вещей лучше, чем ML когда дело доходит до синтаксических форм, но корни F# находятся в ML. Преимущество - то, что хорошее подмножество F# кросс-компилирует с OCaml (который помог загрузить язык F# и пользовательское сообщество); недостаток состоит в том, что F# застревает с несколькими битами ужасного/ограниченного синтаксиса.
AFAIK, нет никакого пути в F# для объявления нескольких привязки, которой позволяют, с тем же именем и различными подписями сопоставления с образцом. Я верю самой близкой конструкции к тому, что Вы ищете, выражение правил функции.
Возьмите этот пример для автомобиля
let car = function
| hd::tl -> hd
| [] -> failwith "empty list"