20得票4回答
是否可能懒惰地获取可遍历对象的所有上下文?

lens 提供了 holesOf,它是这个假设函数的更通用和强大的版本: holesList :: Traversable t => t a -> [(a, a -> t a)] 给定一个容器,holesList会生成该容器中的元素列表以及用于替换这...

14得票1回答
向量创建的安全性

这个问题实际上是一个非常相关的小问题集,我认为将其分解还没有太大意义。 创建Vector的基本方法之一是使用unsafeFreeze。正如其名称所示,unsafeFreeze确实是不安全的。特别地,没有任何东西可以防止在它被冻结后修改传递给unsafeFreeze的MVector。这导致了两...

12得票1回答
可折叠 vs 可遍历

在更深入地研究Applicative时,我接触到了Traversable。虽然我已经从LYHGG了解了Foldable,但我还没有见过前者,所以我开始阅读有关Traversable的Haskell Wiki。 在阅读中,我理解了为什么Foldable.fold与Traversable.seq...

12得票3回答
Haskell 镜头:如何使 view 与 traverse 兼容?

我正在尝试通过在Haskell中实现来学习有关镜头的知识。我已经实现了如下所示的view组合器: {-# LANGUAGE RankNTypes #-} import Control.Applicative import Data.Traversable type Lens s a = ...

11得票1回答
在Haskell的可遍历数据类型中,冒泡排序出现了无限循环

我正在尝试使用Tardis单子在任何可遍历的容器上实现冒泡排序。请注意,这里保留了HTML标签。 {-# LANGUAGE TupleSections #-} module Main where import Control.DeepSeq import Control.Monad.Ta...

11得票2回答
为什么遍历(traversals)基本上是定义在应用函子上的?

最近我对“将所有东西都归结到其基本原理”产生了浓厚的兴趣,但我找不到关于Traversable类型类如何定义的明确理论原因,只有实际应用的“能够在适用的余代数上进行遍历非常有用,而许多数据类型都可以做到这一点”和大量提示。 我知道有一个称为“Applicative家族”的概念,如https:...

11得票2回答
如何在PHP中检测对象是否可遍历?

如何检测变量是否为Traversable对象以在foreach循环中使用?if(is_traversable($variable)) { return (array) $variable; }

10得票1回答
如何将Haskell中的可遍历对象转换为向量?

如果我有一个Traversable实例xs,我该如何将其转换为Vector?

10得票2回答
一个具有嵌套Maybe值的Tree数据类型应该如何实现Traversable实例?

我在三天内有一场Haskell考试,所以我觉得我应该多练习一下,并且查看过去的考试题目,其中一个特点是以下Tree数据类型: data Tree a = Leaf1 a | Leaf2 a a | Node (Tree a) (Maybe (Tree a)) deriving (Eq, Or...

9得票3回答
Traversable如何利用其同时作为Foldable和Functor的子类这一事实?

class (Functor t, Foldable t) => Traversable t where traverse :: Applicative f => (a -> f b) -> t a -> f (t b) traverse g =...