Я часто предоставляю параметр, даже если могу опустить его для ясности. Когда я опускаю параметр, обычно это происходит потому, что тело функции сразу дает понять: i) что есть пропущенный параметр и ii) какова природа параметра. Например, я нахожу достаточным написать
let f = function [] -> "empty" | x::_ -> "not empty"
вместо
let f l = match l with [] -> "empty" | x::_ -> "not empty"
Более интересный пример - написать
let f = List.map g |> List.fold_left h
вместо
let f l = List.map g (List.fold_left h l)
Я нахожу первый более понятным. Преимущество здесь связано с доступностью интуитивно понятных операторов более высокого порядка, таких как |>
, которые предусмотрены в Батареях.