Я понимаю основы композиции функций в F #, как, например, описано здесь .
Может быть, я чего-то упускаю.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * "* 100 *" * * * * * * "* Это только то, что я хотел бы сделать: * 100" * * 1009 "
let add a b = a + b
let double c = 2*c
let addAndDouble = add >> double // bad!
Но даже если вывод add
относится к типу, необходимому для ввода double
, он отклоняется.
Я знаю, что могу переписать add с однимАргумент кортежа:
let add (a,b) = a + b
Или я могу написать новый оператор для каждого числа возможных аргументов первой функции:
let inline (>>+) f g x y = g (f x y)
let doubleAdd = add >>+ double
Но это кажется глупым!Есть ли лучший способ, который я пропустил?