gpt4 book ai didi

.net - F# 有类似 Haskell 的 where 子句的东西吗?

转载 作者:行者123 更新时间:2023-12-03 03:17:52 25 4
gpt4 key购买 nike

我想知道 F# 中是否有像 Haskell 的 where 子句那样的东西。它将允许转换以下代码

let roulleteWheel numberGenerator (scoredPopulation:ScoredPopulation) =
let targetScore =
let totalScore = totalPopulationFitness scoredPopulation
Seq.head (numberGenerator 0.0 totalScore)

let isMatch (score, accumulatedScore) =
if (accumulatedScore >= targetScore) then
Some(score)
else
None

let accumulatedScores =
let scores = Seq.map (fun (_, score) -> score) scoredPopulation
Seq.skip 1 (Seq.scan (+) 0.0 scores)

Seq.pick isMatch (Seq.zip scoredPopulation accumulatedScores)

进入(imo)可读性稍强的版本

let roulleteWheel numberGenerator (scoredPopulation:ScoredPopulation) =
Seq.pick isMatch (Seq.zip scoredPopulation accumulatedScores)
where
let targetScore =
let totalScore = totalPopulationFitness scoredPopulation
Seq.head (numberGenerator 0.0 totalScore)

let isMatch (score, accumulatedScore) =
if (accumulatedScore >= targetScore) then
Some(score)
else
None

let accumulatedScores =
let scores = Seq.map (fun (_, score) -> score) scoredPopulation
Seq.skip 1 (Seq.scan (+) 0.0 scores)

因为它首先显示了函数的核心部分,然后显示了实现细节(我认为是吹毛求疵!)。

我的猜测是,F# 解析代码文件的方式是不可能的。我对吗?查看 F# 的关键字引用似乎没有显示出我正在寻找的任何内容。如果它不存在,是否有其他方法可以更好地分解显示的代码?我想说这样就可以了,但你永远不知道..

最佳答案

遗憾的是没有 - 更遗憾的是 F# 中的顺序非常重要。您可以使用相互递归 let rec ... 和 ... 但它与 where 不同。

关于.net - F# 有类似 Haskell 的 where 子句的东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7298832/

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