Многие функциональные языки программирования поддерживают параметры карри .
Для поддержки функций каррирования параметры функции по сути являются кортежем, где последний параметр может быть опущен, создавая новую функцию, требующую меньшего кортежа.
Я думаю о разработке языка, который всегда использует записи (иначе называемые именованные параметры ) для параметров функции.
Таким образом, простые математические функции в моем воображаемом языке будут:
add { left : num, right : num } = ...
minus { left : num, right : num } = ..
Вы можете передать любую запись этим функциям, если у них есть эти два именованных параметра (они могут иметь больше только «left» и «right»).
Если у них есть только один из названных параметров, создается новая функция:
minus5 :: { left : num } -> num
minus5 = minus { right : 5 }
Я заимствую некоторые из обозначений Haskell для выше .
Кто-нибудь видел язык, который это делает?