Первое, что вы хотите сделать, это отобразить ваши кортежи с помощью функции getSum
.Это можно сделать очень просто, отправив список кортежей в List.map getSum
.Затем вы хотите напечатать каждый элемент в списке, чтобы передать результат List.map getSum
в List.iter
с помощью функции printfn "%d"
.Это работает из-за функций, имеющих параметры карри.printfn "%d"
применяет параметр "%d"
к printfn
и возвращает функцию, принимающую целое число, которое затем печатает.Все это будет выглядеть так:
let listTup = [(2,3,4); (4,5,6); (6,7,8)]
let getSum (a,b,c) =
a + b + c
let printSum tpList =
tpList |> List.map getSum |> List.iter (printfn "%d")
Это печатает:
9
15
21
Мы можем даже упростить функцию, если воспользуемся преимуществами композиции функций (оператор >>
),Обратите внимание, что printSum
принимает tpList
в качестве параметра, а затем просто использует его в качестве входных данных для двух функций, которые передаются по конвейеру вместе.Так как конвейерная обработка просто принимает выходные данные одной функции и передает ее как последний параметр другой функции, все, что нам действительно нужно сделать, это составить функцию List.map getSum
, которая принимает список int
3-кортежей и возвращает списокint
с с List.iter (printfn "%d")
, который принимает список int
с и возвращает единицу измерения.Это будет выглядеть так:
let printSum = List.map getSum >> List.iter (printfn "%d")
Это выведет те же результаты, но это более простой способ выражения функции.