В F # строка
let y = sub m f.Invoke(5)
неоднозначно анализируется как
let y = sub m f.Invoke (5)
(передавая три аргумента sub
).
Чтобы исправить это, вам нужно больше скобок:
let y = sub m (f.Invoke(5))
(Обратите внимание, что использование типов delegate
не является идиоматическим, если не происходит взаимодействие с кодом .NET на других языках. Если f
былофункции, тогда, как вы заметили,
let y = sub m (f 5)
будет достаточно.)