t0m*_*13b 8 f# functional-programming
我正在阅读Tomas Petricek撰写的这篇文章,它提到了|>如下例子中的流水线:
> let nums = [1; 2; 3; 4; 5];;
val nums : list<int>
> let odds_plus_ten =
nums
|> List.filter (fun n-> n%2 <> 0)
|> List.map (add 10)
val odds_plus_ten : list<int> = [11; 13; 15];;
流水线是什么意思?最初,我认为它类似于在内核中流水线化的CPU指令.你能解释它是什么以及它如何在F#的背景下起作用?
谢谢,最好的问候,汤姆.
kvb*_*kvb 15
在某些方面,流水线没有什么特别之处; 而不是写作f (g (h x)),你可以写x |> h |> g |> f,这似乎不是一个明显的改进.但是,有两点值得记住:
x |> Array.map (fun s -> s.Length)当x是a时会起作用string[],但是Array.map (fun s -> s.Length) x不会; 你需要做的Array.map (fun (s:string) -> s.Length) x.Ste*_*eve 11
流水线操作意味着将一个函数的结果传递给另一个函数.在示例中,您将"nums"传递给List.Filter,然后将过滤后的结果传递给List.Map.
更多信息:http://msdn.microsoft.com/en-us/magazine/cc164244.aspx#S6