Russ Cam верен в своем ответе.
Вот сообщение в списке OCaml, в котором говорится об этом
http://caml.inria.fr/pub/ml-archives/ocaml-beginners/2003/11/b8036b7a0c1d082111d7a83c8f6dbfbb.en.html
function
допускает только один аргумент, но допускает сопоставление с образцом, тогда как fun
является более общим и гибким способом определения функции.
Я обычно использую веселье, если нет веских причин использовать функцию.
Это можно увидеть в опубликованном вами коде, где объявление fun
принимает 3 аргумента, а объявление function
выполняет сопоставление с шаблоном на своем входе