2015-01-30 2 views
1

У меня есть три функции, как это:FSharp Функциональной композиция

let functionA (i:int) = 
    "functionA" + string i 

let functionB (i:int) = 
    "functionB" + string i 

let functionC (i:int) = 
    "functionC" + string i 

Я хочу цепь этих функций вместе таким образом, что результат выполнения всех три массив каждого из возвращаемых значений, вроде как Seq .Collect arrayOfFunctions

Есть ли способ сделать это декларативно? Если я изменю параметр functionB из int в float, изменится ли ответ?

Благодаря

+1

Не совсем ясно для меня. Это вы хотите сделать? 'let farr = [| functionA; functionB; functionC |] let applyfarr farr i = Array.map (fun f -> f i) farr' – Petr

+1

'applyfarr farr 2''> val it: string [] = [|" functionA2 "; "FunctionB2"; "functionC2" |] ' – Petr

+0

Да. Выяснил это! Спасибо, я думаю, что это так! Можете ли вы ответить, и я могу отметить это как ответ? –

ответ

4
let farr = [| functionA; functionB; functionC |] 
let applyfarr farr i = Array.map (fun f -> f i) farr 

Как применять:

applyfarr farr 2 
> val it : string [] = [|"functionA2"; "functionB2"; "functionC2"|] 
Смежные вопросы