首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏黯羽轻扬

    Monoid_Haskell笔记9

    *e = e*a = a (摘自幺半群) 要有个遵守结合律的二元函数,还要有个作为该函数幺元的值,二者构成Monoid Monoid typeclass 位于Data.Monoid模块: class Semigroup 类定义的,mappend = (<>)声明了mappend与<>是完全等价的 要求Monoid(幺半群)必须先是Semigroup(半群,具体见最后一部分),其中mempty是幺元,mappend是那个二元函数 a => Semigroup (Maybe a) where Nothing <> b = b a <> Nothing = a Just a <> Just b = Just (a <> b)instance Semigroup a => Monoid (Maybe a) where mempty = Nothing P.S.注意这里的类型约束,要求a是个Semigroup 从语法角度来看,三者关系如下: class Semigroup a where -- 满足结合律的运算(同时也满足封闭性) (<>) :: a -> a -> aclass Semigroup a

    1.1K30发布于 2019-06-12
  • 来自专栏函数式编程语言及工具

    Scalaz(8)- typeclass:Monoid and Foldable

    我们先看看scalaz的Monoid typeclass定义:scalaz/Monoid.scala 1 trait Monoid[F] extends Semigroup[F] { self => 2 Monoid trait又继承了Semigroup:scalaz/Semigroup.scala 1 trait Semigroup[F] { self => 2 //// 3 /** foldable is empty and `Some` otherwise */ 9 def foldMap1Opt[A,B](fa: F[A])(f: A => B)(implicit F: Semigroup def foldMap[B: Monoid](f: A => B = (a: A) => a): B = F.foldMap(self)(f) 8 final def foldMap1Opt[B: Semigroup

    1.3K90发布于 2018-01-05
  • 来自专栏一个会写诗的程序员的博客

    数论 代数 群论 范畴论 与 函数式编程 Haskell, Scala数论代数群论范畴论

    群P 常用术语 Semigroup半群,Monoid幺半群,Group群,Lattice格,Bool布尔代数 备注: 半群研究组合性;幺半群研究组合中的特殊值,群主要研究对称性。

    1K40发布于 2018-08-20
  • 来自专栏CreateAMind

    使用 Langevin 扩散对流形进行采样和估计

    Generality of the proof techniques, which exploit links between two partial differential equations and the semigroup

    24910编辑于 2024-03-25
  • 来自专栏加米谷大数据

    Scala更适合用于大数据处理和机器学习

    另外,很多的类库都参考了范畴论中的一些设计,它们通过使用semigroup、monoid、group标识来保证分布式操作的正确性。

    1K10发布于 2018-07-25
  • 来自专栏函数式编程语言及工具

    Scalaz(13)- Monad:Writer - some kind of logger

    flatMap来实现状态维护的:scalaz/WriterT.scala: 1 def flatMap[B](f: A => WriterT[F, W, B])(implicit F: Bind[F], s: Semigroup 2 flatMapF(f.andThen(_.run)) 3 4 def flatMapF[B](f: A => F[(W, B)])(implicit F: Bind[F], s: Semigroup

    1.1K100发布于 2018-01-05
  • 来自专栏函数式编程语言及工具

    Scalaz(12)- Monad:再述述flatMap,顺便了解MonadPlus

    14 15 implicit def G = G0 16 } 17 18 def plus[A](a: F[A], b: => F[A]): F[A] 19 20 def semigroup [A]: Semigroup[F[A]] = new Semigroup[F[A]] { 21 def append(f1: F[A], f2: => F[A]): F[A] = plus(f1

    1.1K70发布于 2018-01-05
  • 来自专栏斑斓

    哲思片段 | 设计中的变与不变

    这个Identity表达了单一、恒等的概念,例如Int类型中加减法运算半群(SemiGroup)中的Zero,就是一个Identity,因为半群中的任何元素a与Zero结合,依然是元素a本身。

    1.7K70发布于 2018-03-07
  • 来自专栏我的独立博客

    一些范畴论上的概念

    如果仅满足封闭性和结合律,则该G是一个 半群(Semigroup) ; 如果满足封闭性和结合律并且存在幺元,则该G是一个 幺半群(Monoid)。

    66910编辑于 2024-09-02
  • 来自专栏函数式编程语言及工具

    Scalaz(17)- Monad:泛函状态类型-State Monad

    但Writer的Log是一种Monoid类型,只支持Semigroup的a|+|b操作,所以只能实现一种两段Log相加累积这种效果。 这点我们可以从WriterT的flatMap函数得出: def flatMap[B](f: A => WriterT[F, W, B])(implicit F: Bind[F], s: Semigroup , B] = flatMapF(f.andThen(_.run)) def flatMapF[B](f: A => F[(W, B)])(implicit F: Bind[F], s: Semigroup

    2.1K80发布于 2018-01-05
  • 来自专栏函数式编程语言及工具

    Scalaz(20)-Monad: Validation-Applicative版本的Either

    . */ def ap[EE >: E, B](x: => Validation[EE, A => B])(implicit E: Semigroup[EE]): Validation[EE, B]

    59180发布于 2018-01-05
  • 来自专栏大数据

    浅谈Scala在大数据处理方面的优势

    另外,很多的类库都参考了范畴论中的一些设计,它们通过使用semigroup、monoid、group标识来保证分布式操作的正确性。

    2.7K100发布于 2018-01-19
  • 来自专栏函数式编程语言及工具

    Scalaz(38)- Free :Coproduct-Monadic语句组合

    的功能,因为在WriterT的flatMap中实现了W|+|W: def flatMap[B](f: A => WriterT[F, W, B])(implicit F: Bind[F], s: Semigroup , B] = flatMapF(f.andThen(_.run)) def flatMapF[B](f: A => F[(W, B)])(implicit F: Bind[F], s: Semigroup

    1.3K100发布于 2018-01-05
  • 来自专栏前端自习课

    【JS】446- 你不知道的 map

    Semigroup a => a ~> a -> a,而这个类型签名中就对类型变量 a 做了类型约束,使得类型 a 必须满足类型类 Semigroup

    1.7K20发布于 2019-12-24
  • 来自专栏程序人生

    沅有芷兮:类型系统的数学之美

    虽然我的 haskell 之旅最终从入门走向了放弃,但就像冰火岛上对武功秘籍懵懵懂懂的无忌,那些 monad,monoid,semigroup,sum type,product type 等概念还是烙在我的脑海里

    1.2K10发布于 2019-06-18
  • 来自专栏CSDN技术头条

    在下函数式编程,有何贵干?

    orElse other println(partial(3)) // 3 is odd println(partial(0)) // else 尾声 除了以上特性,函数式编程中还有 Monoid,SemiGroup

    1K70发布于 2018-02-12
  • 来自专栏函数式编程语言及工具

    泛函编程(22)-泛函数据类型-Monoid In Action

    我们统称这些类型为semigroup

    1.3K60发布于 2018-01-04
  • 来自专栏前端开发学kotlin

    前端开发者的 Kotlin 之旅:函数式编程深入

    *import arrow.typeclasses.Semigroup// 数据验证,可以收集多个错误data class User(val name: String, val age: Int, val

    37310编辑于 2025-05-14
  • 来自专栏专知

    【最新】人工智能领域顶会AAAI 2018 Pre-Proceedings 论文列表(附pdf下载链接)

    Karthik Abinav Sankararaman*, Aravind Srinivasan, Pan Xu Alternating Circulant Random Features for Semigroup

    7.8K60发布于 2018-04-12
  • 来自专栏KAAAsS's Blog

    当我们谈论Monad的时候(二)

    repeatList x) liftA2 f (ZipList xs) (ZipList ys) = ZipList (zipListWith f xs ys) 简单测试一下 import Data.Semigroup

    1.4K10编辑于 2022-01-14
领券