- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读本教程:
http://blog.jakubarnold.cz/2014/08/06/lens-tutorial-stab-traversal-part-2.html
我的代码如下所示:
import Control.Applicative
import Data.Traversable
import Control.Lens
data User = User String [Post] deriving Show
data Post = Post String deriving Show
posts :: Lens' User [Post]
posts f (User n p) = fmap (User n) (f p)
users :: [User]
users = [User "john" [Post "hello", Post "world"], User "bob" [Post "foobar"]]
tp :: (Traversable t, Applicative f) => ([Post] -> f [Post]) -> t User -> f (t User)
tp = traverse . posts
现在,在博客文章之后,以下是一些常见的镜头计算:
*Main> view tp users
[Post "hello",Post "world",Post "foobar"]
*Main> set tp [Post "x",Post "y"] users
[User "john" [Post "x",Post "y"],User "bob" [Post "x",Post "y"]]
*Main> view tp (set tp [Post "x",Post "y"] users)
[Post "x",Post "y",Post "x",Post "y"]
最后的评价让我很困惑。下面的透镜定律不应该成立吗?
view l (set l v s) = v
(该定律取自 http://artyom.me/lens-over-tea-2 。)
最佳答案
这是透镜定律,而tp
是遍历,所以不必遵守这个定律。
严格来说,view
根本不应该与遍历一起工作(它无论如何都可以工作,但它是通过将收集到的结果进行幺半群组合来实现的)。
关于haskell - 教程中的简单 haskell 透镜违反了透镜定律,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34463638/
一年多以来,我一直在阅读C++并用它编写小程序。最近我遇到了三巨头法则。我从来不知道这条法律。 无意中,我在这里找到了它:Rule of Three . 我可以知道 C++ 中的任何其他此类定律吗?
根据 Control.Arrow 文档,对于许多 monads(那些 >>= 操作是严格的)instance MonadFix m => ArrowLoop (Kleisli m)不满足 loop (
通常在 Haskell 中我们定义 Monad s 表示为 return和>>= 。有时分解也方便>>=进入fmap和join 。 Monad一旦您习惯了这两种公式的定律,它们是众所周知的并且相当直观
我正在阅读 James Iry's blog post在 Scala 中的 Monads 上。我在第三部分,我对他关于单元的单子(monad)第二定律的描述感到困惑。特别是这种说法: unit(x)
我见过提到 IO不满足单子(monad)定律,但我没有找到一个简单的例子来说明这一点。有人知道一个例子吗?谢谢。 编辑:如ertes和 n.m.指出,使用 seq有点非法,因为它可以使任何 monad
齐普夫定律是许多现实生活中的一种模式,齐普夫定律最常见的情况是在文本段落中,其中最常用的单词的数量是第二个最常用单词的两倍。 我一直在学习 Python 中的字典,并尝试自己做这件事,但对它们的一些方
这可能是一个幼稚的问题,但是 RSpec 的测试 DSL 是否违反了 Demeter 法则? 这是来自 http://rspec.info 的 RSpec DSL 示例: bowling.score.
Snell's law指出入射角和折射角的正弦比等于给定 Material 折射率比的倒数: 我想实现一个简单的程序来可视化法律。自 , 和 是已知的,这是我计算的方式 : theta2 = asin
嘿,我正在开发一个文本生成器,它应该可以生成数百万种不同的文本。为了使每篇文章的内容更真实,我使用了 Zipf 定律它运行良好,单词分布正确。 但是下面的 next() 函数执行得非常慢,因为我想生成
我正在使用一个工具来自动生成按层次结构组织的 XML 文件的类表示形式。 XML 文件是我的应用程序需要能够访问的设置文件(只读)。 如果我将顶级节点(例如,AppSettings)传递给需要访问一项
不使用形式推导,如何测试自定义的Monad实例是否遵循Monad定律? 最佳答案 FWIW,这是我最近编写的一组 QuickCheck 属性,用于测试从 F 代数派生的 Maybe 实现的 Monad
我是一名优秀的程序员,十分优秀!