- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Scalaz trait Foldable
我们看到了 method foldMap
有以下描述
Map each element of the structure to a [[scalaz.Monoid]], and combine the results.
def foldMap[A,B](fa: F[A])(f: A => B)(implicit F: Monoid[B]): B
scala> List(1, 2, 3) foldMap {identity}
res1: Int = 6
scala> List(true, false, true, true) foldMap {Tags.Disjunction}
res2: scalaz.@@[Boolean,scalaz.Tags.Disjunction] = true
最佳答案
默认情况下,Clojure 没有 monadic 组合。为此,您需要像 algo.monads 这样的库或 fluokitten .
Haskell 和 Skalaz 中的幺半群是一个实现三个函数的类:
mempty
返回标识元素 mappend
合并两个相同类型的值 mconcat
用于将该类型的集合转换为项目和 v.v. reduce
是用于在集合上累加的首选高阶函数。
mappend
的相同类型.第三个总是一个集合,这就是为什么
mconcat
不需要。
clojure.reducers
的上下文中和
clojure.core/reduce
,但是有一个幺半群:一个函数在不带参数的情况下调用时返回它的标识元素。
(+) => 0
(*) => 1
(str) => ""
(vector) => []
(list) => ()
reduce
的两个参数版本中用作reducer。 ;它的“幺半群身份”或
mempty
被调用以创建初始累加器。
(reduce + [1 2 3]) => (reduce + (+) [1 2 3]) => (reduce + 0 [1 2 3])
or
:
(defmacro or
"Evaluates exprs one at a time, from left to right. If a form
returns a logical true value, or returns that value and doesn't
evaluate any of the other expressions, otherwise it returns the
value of the last expression. (or) returns nil."
{:added "1.0"}
([] nil)
([x] x)
([x & next]
`(let [or# ~x]
(if or# or# (or ~@next)))))
([] nil)
.然而,
or
实现为宏以支持短路,并且只能在要扩展的表达式中使用,不能作为函数参数:
(reduce or [false true false true true])
CompilerException java.lang.RuntimeException: Can't take value of a macro: #'clojure.core/or, compiling
or
这是一个真正的析取函数。它还应该实现一个返回 nil 的无参数版本:
(defn newor
([] nil)
([f s] (if f f s)))
(reduce newor [true false true true])
=> true
or
作为多元宏
(or true false true true)
=> true
关于scala - Clojure 相当于 Scalaz Foldable 的折叠图是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21778364/
我使用 LINQ Aggregate 运营商经常。本质上,它允许您通过在函数的最后一个计算值和序列的下一个元素上重复应用该函数,在序列上“累加”一个函数。 例如: int[] numbers = ..
我正在尝试 Foldable Haskell 中的 typeclass,以如下数据类型为例: data Tree a = Empty | Node (Tree a) a (Tr
我一直在探索 Foldable类和Monoid类(class)。 首先,假设我想折叠 Monoid First 的列表.像这样: x :: [First a] fold? mappend mempty
我构建了一个函数来验证可折叠结构的所有元素是否相等。 与列表中的类似功能相比,在我看来,更通用的功能异常复杂,但我无法简化它。 你有什么建议吗? import Data.Monoid import D
我定义我的树如下: data Tree a = Tip | Node (Tree a) a (Tree a) deriving Show 并使它成为一个 Functor 的实例: inst
以下导入语句导致与 foldr 等发生冲突。因为第一个导入语句似乎将 Data.Foldable 中的所有函数导入到我的模块中: import Data.Foldable (Foldable (..)
来源:赫顿,格雷厄姆。 “Haskell 编程”(第 267 页) Show how the Maybe type can be made foldable and traversable, by g
我有一个用于存放a的可折叠容器。 BasicPrelude 中的 Foldable 类型类提供的方法之一是 elem::(Eq a) => a -> t a -> Bool。现在,对于我的容器,只要我
我最近尝试运行代码: > let _l_ = _l_ > any [True, _l_, False] True > any [False, _l_, True] > -- _l_ 我想知道这是否被认
我有一个数据类型: data Box a b = Box a b 我想创建一个 Box 的 Foldable 实例,因为必须为 Foldable 实例提供某种类型的东西 * -> *,我将实例声明为:
在 Scalaz trait Foldable 我们看到了 method foldMap 有以下描述 Map each element of the structure to a [[scalaz.M
考虑这段代码,使用 Functor 和 Foldable 类型类: {-# LANGUAGE DeriveFunctor, DeriveFoldable #-} data Foo a = Foo (M
wiki page说这两个类都处理容器操作,Foldable 是一类具有 foldr 的容器定义在它们之上,对于 Functor 它是 fmap . 但是,Foldable 类型和 Functor 类
资料来源:格雷厄姆·赫顿。 “Haskell 编程”(第 267 页) Using foldMap, define a generic version of the higher-order func
在 LYAH ,有一段代码看起来像这样。 data Tree a = Empty | Node a (Tree a) (Tree a) deriving (Show, Read, Eq) insta
此问题使用 http://hackage.haskell.org/package/recursion-schemes-4.0/docs/Data-Functor-Foldable.html 中的概念/
资料来源:格雷厄姆·赫顿。 “Haskell 编程”(第 267 页) Using foldMap, define a generic version of the higher-order func
我开始感兴趣并且没有在一个地方找到相应术语的列表: Map MorphismFoldable Catamorphism ... 谁可以补充术语表 最佳答案 我认为你的问题是在正确的轨道上,但范畴论
Data.Vector.Unboxed不是 Foldable 的实例.编写适用于 Foldable 实例的函数的最佳方法是什么?以及未装箱的向量?例如这个版本的 sum适用于列表和装箱向量,但不能使用
签名应该是: tailMay :: Foldable f => f a -> Maybe (f a) 我得到了 headMay 的定义,这是有道理的,并且(对我来说)相当聪明: headMay ::
我是一名优秀的程序员,十分优秀!