我正在一些代碼,我需要使用f#查詢來總結一個列表。f#查詢與方程
對於任何人誰是工作在F#基礎知識,這裏有一個方便的鏈接:https://learnxinyminutes.com/docs/fsharp/
到目前爲止,我有一個打印語句5個數字的平方的總和代碼。
到目前爲止,這正確地顯示3000作爲每個列表的平方的總和。 '數字'將用於查詢。
let square x = x * x
let numbers = [10.0; 20.0; 30.0; 40.0]
let sumOfSquare2 =
[10.0; 20.0; 30.0; 40.0]
|> List.map square
|> List.sum
printfn "Sum of square: %A" (sumOfSquare2)
let sumOfSquare =
List.sum (List.map square [10.0; 20.0; 30.0; 40.0])
printfn "Sum of square: %A" (sumOfSquare)
目前,我有點被困在如何在查詢後正確使用'square'函數。
// A query expression.
let query1 =
query {
for number in numbers do
select (number)
}
|> square query
printfn "Query sum of squares: %A" (query1)
那麼我該如何正確呈現呢? '查詢'本身起作用(當在查詢中使用printfn時),但是當試圖將平方函數流水化爲查詢時,它不能編譯。
讓QUERY1 |> Seq.iter(樂趣é - >方形(E))|> Seq.sum導致編譯錯誤。我真的不知道如何將這個應用於我自己的問題。 我已閱讀您鏈接的文章。它不能解決我遇到的問題,即將我的平方函數應用於查詢結果。 – EidahageFeroe
以下是我如何理解您的解決方案。這會導致編譯錯誤。 讓QUERY1 = 查詢{ 在數數做 選擇(數量) } |> Seq.iter(樂趣é - >方(查詢))|> Seq.sum – EidahageFeroe
如果你看看函數簽名'Seq.iter',你會看到它返回單位,因此通常用於其副作用(例如打印到屏幕)。的確,你需要'Seq.map'然後'Seq.sum'。查詢返回seq,這是懶惰的,所以如果你想強制它的評價只是管它到Array:'|> Seq.toList' – s952163