Jane Street\'s Core lib has such a function: Fn.const.
Fn.const
https://github.com/janestreet/core_kernel/blob/master/lib/fn.ml
let const c = (); fun
1., 2. and 3.: see seppk's answer
4.: The OCaml type system is such that functions can't return polymorphic values. Your should read Gabriel's answers about it: What is the difference between 'a and '_l? overgeneralized curried fns