Сегодня натолкнулся на это в F #:
let test<'a> (f: 'a -> unit) =
let x = f 123
let y = f "wow"
()
, что приводит к ошибке компилятора, поскольку универсальный параметр должен быть одинаковым в каждом вызове test <'a>, как описано здесь: Типвывод не работает при передаче функции карты
Хотя это имеет смысл, мне стало любопытно, есть ли еще какие-либо языки, которые реализовали что-то подобное - может быть, своего рода «дженерики на уровне параметров»"?
В качестве продолжения, какие проблемы возникают при реализации чего-то подобного?