- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基地提供ZipList ,它只是 []
的包装器在哪里 <*>
基于 zip
而不是笛卡尔积。这不是默认值,因为它与 Monad []
不一致。例如,但有些人觉得它更直观,而且这两种行为在不同的情况下都很有用。
Edward Kmett 提供 Distributive ,Traversable
的对偶. Traversable 可以映射/推送/分发到任何 Applicative Functor;可以从任何 Functor 中提取/分解分布。 (由于我没有解包的原因,distribute
不需要外层是 Applicative。)
Length-indexed lists are Distributive ,并按照您的预期工作。具体来说,他们的 Applicative 实例基于 zip
, 就像 ZipList
!这表明 ZipList
也可以是 Distributive
,这将是有用的。Distributive
的文档请注意任何实例必须为真的两件事:
(->) x
,它 [必须] 与 x
同构。”Int ->
同构. ZipList
存在的理由。 . instance Distributive ZipList where distributive = ...
并且无法让它发挥作用。对于大多数仿函数
f ZipList a
distribute f
有明显的含义,尽管我担心这可能只是因为我没有考虑足够多的不可遍历仿函数。
Maybe
很棘手;应该 distribute Nothing
是 []
或 repeat Nothing
?但是distribute
与 sequenceA
是双重的,以及 Traversable Maybe
实例说它应该是repeat Nothing
. (->) e
可能是交易破坏者。distribute $ const (repeat x) = repeat (const x)
. (\i -> (! i) <$> f) <$> [0..]
. distribute $ const [] ≅ repeat undefined
,这有点傻。 Applicative ZipList
包含一个重要的设计决策:length (a <*> b) == min (length a) (length b)
(而不是错误或其他)。我们根本没有利用它。我可以看到我们可能会是distribute = const []
. distribute f = (\i -> (!! i) <$> f) <$> [0..]
更简单的方式对其进行概括? ?
最佳答案
不,它不能是分布式的。
明显的Distributive
Pair
的实例看起来像这样:
instance Distributive Pair where
distribute vs = Pair (pFst <$> vs) (pSnd <$> vs)
现在让我们考虑一下列表实例。 (让我们暂时忽略
ZipList
噪音,假设基本列表具有 zippy 实例。)我们需要
distribute . distribute = id
.认为
x = distribute (Pair "" "a")
因此法律要求:
distribute x = Pair "" "a"
我们可以替换
distribute
的定义对于
Pair
,并得到:
Pair (pFst <$> x) (pSnd <$> x) = Pair "" "a"
这是一个问题,因为列表的
(<$>)
保留长度,在这里我们要求它在提供相同参数时返回两个不同长度的答案。哎呀!
data Stream a = Cons a (Stream a)
感兴趣,保证无限列表的类型,可以制作
Distributive
:
sHead :: Stream a -> a
sHead (Cons a _) = a
sTail :: Stream a -> Stream a
sTail (Cons _ as) = as
instance Distributive Stream where
distribute streams = Cons (sHead <$> streams) (distribute (sTail <$> streams))
关于haskell - ZipList 可以是分布式的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68448432/
我正在运行一个 redis 实例,我在其中存储了很多具有整数字段和值的哈希值。具体来说,有很多形式的散列 {1: , 2: , ..., ~10000: } 我最初使用 hash-max-ziplis
基地提供ZipList ,它只是 [] 的包装器在哪里 基于 zip而不是笛卡尔积。这不是默认值,因为它与 Monad [] 不一致。例如,但有些人觉得它更直观,而且这两种行为在不同的情况下都很有用。
我如何编译和执行 Redis ziplist.c作为单独的可执行文件? 我只想执行 ziplist.c 主函数。 最佳答案 您可以使用以下命令: gcc -std=c99 -O2 -DZIPLIST_
此前我们学习了常见的reids数据类型,这些数据类型都需要底层的数据结构的支持,现在我们来看看redis常见的底层数据结构:dict、ziplist、quicklist。 1 redis di
GHC Prelude 中列表的默认 monoid 是串联。 [1,2,3] <> [4,5,6]变成 [1,2,3] ++ [4,5,6]因此[1,2,3,4,5,6] 我想编写一个行为如下的 Zi
我想为我的自定义列表实现一个 Applicative 实例。 import Test.QuickCheck import Test.QuickCheck.Checkers import Test.Qu
这来自Haskell from First Principles一书中的练习。本练习是为 ZipList' 实现 Applicative,这类似于 Prelude 的 ZipList。书上有这个提示
假设我有一个数字列表和函数列表: val xs: List[Int] = List(1, 2, 3) val fs: List[Int => Int] = List(f1, f2, f3) 现在我想使
Typeclassopedia提出这个问题: Determine the correct definition of pure for the ZipList instance of Applicat
我正在从learn-you-a-haskell 书中学习Haskell 中的应用仿函数。 但是每当我尝试在 ghci 中输入以下代码时: :{ instance Applicative ZipList
应用程序的两个著名示例是 monad 和 ziplist。还有其他例子吗? 最佳答案 来自 Time flies like an applicative functor通过康纳麦克布莱德: Struc
我目前正在学习 Haskell 中的应用程序。如果我没记错的话,列表有两个不同的 Applicative 实例(List 和 ZipList - 第二个被定义为包装列表值的新类型)。 ZipList
我的问题示例:HMSET myhash field1 value1 field2 value2 而myhash只有这两个字段。 主要问题是如何计算hash-max-ziplist-value,以便我的
我是一名优秀的程序员,十分优秀!