Возможно ли в F # применить значение, как если бы оно было функцией? Например:
let record =
{|
Func = fun x -> x * x
Message = "hello"
|}
let message = record.Message // unsweetened field access
let unsweet = record.Func 3 // unsweetened function application
let sweet = record 3 // sweetened function application
Сейчас последняя строка не компилируется, конечно:
error FS0003: This value is not a function and cannot be applied.
Существует ли какой-нибудь синтаксический подсластитель, который позволил бы мне «маршрутизировать» приложение функции по своему усмотрению, сохраняя при этом его нормальное несладкое поведение? Я думаю о чем-то волшебном:
// magically apply a record as though it was a function
let () record arg =
record.Func arg
(Примечание: я использовал запись в этом примере, но я также был бы счастлив с классом.)