作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
试图熟悉 Foldable
等伟大的想法, Functor
等。我正在为 2*2 矩阵编写数据结构。它不是真正的用途,所以我认为这个幼稚的实现是一个好的开始:
data Matrix2d a = M2 a a a a
Num
实例
instance Num a => Num (Matrix2d a) where
(M2 a0 b0 c0 d0) + (M2 a1 b1 c1 d1) = M2 (a0+a1) (b0+b1) (c0+c1) (d0+d1)
-- ....
+
这个明显的定义是五次。当然还有更多抽象的空间。我更喜欢类似的东西
(+) = fzipWith (+) -- f does not mean anything here
class Zippable z where
fzipWith :: (a -> b -> c) -> z a -> z b -> z c
instance Zippable Matrix2 where
fzipWith f (M2 x y z w) (M2 a b c d) = M2 (f x a) (f y b) (f z c) (f w d)
Foldable
,有
Functor
--- 为什么不
Zippable
?
最佳答案
你不能只用 Functor
, 但使用 Applicative
你可以做
fzipWith f za zb = f <$> za <*> zb
Applicative []
的默认实例不会做你想做的事;它需要每个
a
每
b
.但我相信有一个
ZipList
newtype 某处为您提供了一个以您期望的方式压缩的实例。 (不,我不知道它到底住在哪里。)
f <$> za <*> zb <*> zc <*> zd
zipWith
,
zipWith3
,
zipWith4
等功能。
关于haskell - haskell 的 "Zippable"类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31143239/
试图熟悉 Foldable 等伟大的想法, Functor等。我正在为 2*2 矩阵编写数据结构。它不是真正的用途,所以我认为这个幼稚的实现是一个好的开始: data Matrix2d a = M2
本文整理了Java中com.oath.cyclops.types.Zippable.map()方法的一些代码示例,展示了Zippable.map()的具体用法。这些代码示例主要来源于Github/St
本文整理了Java中com.oath.cyclops.types.Zippable.zip3()方法的一些代码示例,展示了Zippable.zip3()的具体用法。这些代码示例主要来源于Github/
本文整理了Java中com.oath.cyclops.types.Zippable.zipWithPublisher()方法的一些代码示例,展示了Zippable.zipWithPublisher()
本文整理了Java中com.oath.cyclops.types.Zippable.zip()方法的一些代码示例,展示了Zippable.zip()的具体用法。这些代码示例主要来源于Github/St
我是一名优秀的程序员,十分优秀!