Вы можете использовать List.map
вместо List.iter
и возвращать элементы без изменений.Вы бы перестроили список:
let myList =
numbers
|> List.map square
|> List.map (fun x -> printfn "%d" x; x)
|> List.filter isOdd
|> List.map (fun x -> printfn "%d" x; x)
Другой способ, вместо того, чтобы хранить отдельно каждый элемент, это сохранить весь список как параметр функции:
let myList =
numbers
|> List.map square
|> (fun xs -> List.iter (printfn "%d") xs; xs)
|> List.filter isOdd
|> (fun xs -> List.iter (printfn "%d") xs; xs)
OneПоследний вариант, который я могу придумать, это полностью разветвить конвейер:
let myList =
numbers
|> List.map square
|> fun xs ->
xs |> List.iter (printfn "%d")
xs
|> List.filter isOdd
|> fun xs ->
xs |> List.iter (printfn "%d")
xs