我出乎意料地遇到麻烦,从“选项”列表转到仅包含“某些”元素的列表。 我最初的尝试是: let ga = List.filter (fun xx -> match xx with | Some(g) -> true | None -> false) gao 但是,当然,此结果类型仍然是“选项列表”。我不知道如何使用List.map来压缩它,因为您必须在match语句中处理所有情况。我有一个丑陋的解决方案,但我想知道是否还有更好的方法。 丑陋: let rec gOptRemove gdec gacc = match gdec with | head :: tail -> match head with | Some(a) -> gOptRemove tail (a :: gacc) | None …
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 关于F#/功能片段,已经有两个 问题。 但是,我在这里寻找的是有用的代码片段,一些可重用的“帮助程序”功能。或是您永远不会记得的晦涩但精巧的模式。 就像是: open System.IO let rec visitor dir filter= seq { yield! Directory.GetFiles(dir, filter) for subdir in Directory.GetDirectories(dir) do yield! visitor subdir filter} 我想将其作为一种方便的参考页。因此,没有正确的答案,但希望有很多好的答案。 编辑Tomas Petricek创建了一个专门用于F#代码段的网站http://fssnip.net/。
我正在尝试创建一个F#函数,该函数将返回int任意嵌套的s 列表的总和。就是 但是对于工作list<int>,一list<list<int>>和a list<list<list<list<list<list<int>>>>>>。 在Haskell中,我将编写如下内容: class HasSum a where getSum :: a -> Integer instance HasSum Integer where getSum = id instance HasSum a => HasSum [a] where getSum = sum . map getSum 这会让我做: list :: a -> [a] list = replicate 6 nestedList :: [[[[[[[[[[Integer]]]]]]]]]] nestedList = list …