困惑(fmap length Just)[1,1,1,1] vs. fmap length $ Just [1,1,1,1]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了困惑(fmap length Just)[1,1,1,1] vs. fmap length $ Just [1,1,1,1]相关的知识,希望对你有一定的参考价值。
我理解parens强制执行不同的操作顺序,但我不太了解第一个结果:
>> (fmap length Just) [1, 2, 3]
1
虽然以下内容非常有意义 - 我们在Just结构上提升了长度函数,因此我们应该得到“Just [list of list]”:
>> fmap length $ Just [1, 2, 3]
Just 3
第一种情况发生了什么?
答案
在第一种情况下,您将获得Functor
的函数实例,其中fmap = (.)
,所以:
fmap length Just [1,2,3]
=
(length . Just) [1,2,3]
=
length (Just [1,2,3])
Foldable
的Maybe
实例说,Nothing
s有0
的长度,而Just
s有1
的长度 - 如果你认为Maybe a
有点像a
s的集合,其中至多有一个a
,这是非常明智的。
以上是关于困惑(fmap length Just)[1,1,1,1] vs. fmap length $ Just [1,1,1,1]的主要内容,如果未能解决你的问题,请参考以下文章