в SML, это распространено и легко определить функцию с использованием как сопоставления в карри и шаблоне. Вот простой пример:
fun zip [] _ = []
| zip _ [] = []
| zip (x::xs) (y::ys) = (x,y)::(zip xs ys)
Игнорирование функций библиотеки, какой лучший способ портировать это в Ocaml? Насколько я могу сказать, нет простого способа объявить функцию с использованием как в Carrying, так и в шаблоне.