f# 用方程式查询

标签 f# sum equations

我正在编写一些需要使用 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)

那么我该如何正确呈现呢? “query”本身有效(在查询中使用 printfn 时),但在尝试将 square 函数管道化以进行查询时,它无法编译。

最佳答案

它基本上与您在 list 中使用的代码相同,但是由于查询返回一个 seq,因此使用 Seq.map 而不是List.map:

// A query expression.
let query1 =
    query {
        for number in numbers do
            select (number)           
    }
   |> Seq.map square    


printfn "Query sum of squares: %A" (query1)

请注意,您的查询不会转换任何内容,但我认为您确实喜欢这个例子。

关于f# 用方程式查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42731139/

相关文章:

f# - 无法构建 F# 类型提供程序 SDK

parsing - 递归解析语法消耗输入并且无法解析序列

javascript - javascript中输入的总和

python - 在 Python 中求解矩阵形式的非线性方程组

Objective-C:如何求解方程组?

linq - 为什么在使用方法链接查询表达式 where 子句的 F# 中需要括号?

f# - 如何创建 "subject"F# Observable?

c# - 我如何总结每 5 个数字而不是所有数字?

mysql - 计算一行中的总和 - 动态 HTML 表格

php - css中的化学式