如何在 Haskell 中有效地通过foldr 编写反向操作?
请注意,由于复杂性呈二次方增长,平凡的解决方案 reverse a = foldr (\b c -> c ++ [b] ) [] a 效率不高。如果尝试使用通常的foldl 到foldr 转换(盲…
反应式香蕉可以处理网络中的循环吗?
我们有这样的代码: guiState :: Discrete GuiState guiState = stepperD (GuiState []) $ union (mkGuiState changes model) evtAutoLayout evtAutoL…
理解函数 elem 和 isInfixOf
不久前,我在此处elem函数的问题>,但我认为答案并不完全令人满意。我的问题是关于表达式的: any (`elem` [1, 2]) [1, 2, 3] 我们知道 elem 位于反引…
为什么是单子?它如何解决副作用?
我正在学习 Haskell 并试图理解 Monad。我有两个问题: 据我了解,Monad 只是另一个类型类,它声明了与“容器”内的数据交互的方法,包括 Maybe、List…
Haskell基准测试/非严格约简的nf/whnf优化
我正在尝试优化一个旨在获取大型数据集的库 然后对其应用不同的操作。现在图书馆正在工作,我想要 来优化它。 我的印象是非严格的评估允许 GHC 组合操…
修复一个特别模糊的 Haskell 空间泄漏
因此,在从我用来将推文数据分解为 n 元语法的 Haskell 中发挥出最后一点性能后,我遇到了空间泄漏问题。当我进行分析时,GC 使用了大约 60-70% 的进…
字符 \US 处出现词汇错误
我需要用高阶函数重新制作这个函数。我不知道如何更改 lookupTitle 但其他我已经更改了。但我在 bookAuthors 上遇到了错误。 type Title = String typ…
如何在 Haskell 共享库上使用 System.Posix.DynamicLinker
假设我有一个已编译的共享 Haskell 库(Linux)。我可以以某种方式使用 System.Posix.DynamicLinker (dlopen 和 dlsym)来获得实际可调用的 Haskell …
如何将函数放入模块中?
我已经有了这个功能: isSortedUp x y z = if x>y && y>z then True else False 并且我想将它放入模块 UP 中。 我想将此函数放入模块中: isSortedDow…
反引号运算符的固定性?
反引号运算符的固定性是什么? 例如,在 真实世界 Haskell 的代码中: ghci> (1+) `fmap` [1,2,3] ++ [4,5,6] [2,3,4,4,5,6] 很明显反引号运算符`fmap…
使用自定义过滤器进行快速排序
我需要使用自定义过滤器进行快速排序。 在编译期间,我在 filter (>=x) xs 上收到错误。 --sort with two filters quicksort (x:xs) = (quicksort les…
使用 map、concat 替换 3 参数列表理解
我对列表理解有一些了解。我理解该表达式: [x * x | x <- [1..10]] should output [1,4,9,16,25,36,49,64,81,100] 并且该表达式的效果与以下相同: m…
不同种类的类型类约束
我一直在摆弄 Haskell 中列表的通用类型类。 class HasEmpty a where empty :: a isEmpty :: a -> Bool class HasEmpty (l a) => List l where cons :…