gpt4 book ai didi

f# - 我如何在 F# 中执行 APL 中的压缩?

转载 作者:行者123 更新时间:2023-12-04 17:48:55 24 4
gpt4 key购买 nike

在 APL 中,可以使用一个位向量来选择另一个向量的元素;这称为压缩。例如 1 0 1/3 5 7 将产生 3 7。

在一般的函数式编程中,特别是在 F# 中是否有一个公认的术语?

这是我的 F# 程序:

let list1 = [|"Bob"; "Mary"; "Sue"|]
let list2 = [|1; 0; 1|]

[<EntryPoint>]
let main argv =

0 // return an integer exit code

我想做的是计算一个新的字符串[],它是 [|"Bob";苏"|]

在 F# 中如何做到这一点?

最佳答案

Array.zip list1 list2                 // [|("Bob",1); ("Mary",0); ("Sue",1)|]
|> Array.filter (fun (_,x) -> x = 1) // [|("Bob", 1); ("Sue", 1)|]
|> Array.map fst // [|"Bob"; "Sue"|]

管道运算符(operator) |>函数应用程序是否在语法上颠倒了,即 x |> f相当于 f x .如另一个答案中所述,替换 ArraySeq避免构建中间数组。

我希望您会发现 F# 中缺少许多 APL 原语。对于列表和序列,许多可以通过将 Seq 中的原语串在一起来构造。 , Array , 或 List模块,如上。供引用, here is an overviewSeq模块。

关于f# - 我如何在 F# 中执行 APL 中的压缩?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22742281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com