由买买提看人间百态

topics

全部话题 - 话题: monoid
1 (共1页)
c******o
发帖数: 1277
1
来自主题: Programming版 - 想学FP最好不要从Scala开始
这个我也看了好几遍,不如书(functional programming in scala) 好懂
我觉得一般来说
functor/monad 最重要
然后看看monoid/foldable (这个最容易)
applicative/traversable,这个我到现在还不是那么懂。。。
arrow/comonad我就完全不懂了。。。
我前一段做的笔记:
trait Semigroup[A] {
def append(x: A, y: A): A
}
List(1,2,3,4).append(List(5)) = List(1,2,3,4,5)
trait Functor[T[_]]{
def map[A,B](ta:T[A])(f:A=>B):T[B]
}
map(List(1,2,3,4))(x=> x.toString) = List("1", "2", "3", "4")
simplest transform, like a foreach in someway
trait Applicative[T[_]] extends Functor[T]{
def unit[... 阅读全帖

发帖数: 1
2
来自主题: Military版 - 科普一下张量吧
本身道理很简单
就是把多重线性写成单线性的一种写法
只是把各个分部展开来写的而已
然后可以扩展一下
张量积是一种用两个线性空间构造新线性空间的方法
(其实我觉得用这个方法理解张量比直接讲系数的运算更好理解)
可以类比于直和
直和和张良在表示论里是最基本的构造
这个地方可以升级一下
把所有线性空间放到一起做成一个范畴
由于直和和张良的存在,这个范畴有个特殊的名字(k-linear monoidal category)
其中k-linear对应直和这个运算,monoidal对应张量这个运算
于是自然的考虑该范畴的grothendieck group,张量在上面自然诱导一个环结构,这个
环也叫grothendieck ring 或者k ring.
当然k group上面可以有很多不同的乘法,张量定义的这个是最基本的
然后上面说的可以再升级,把线性空间换成各种奇葩东西的表示
相应的范畴以及k ring有好多好兴致,基本上90年代以后的表示论和数学物理有一大帮
人在搞这个
(请不要拿我上面说法中细微小错打我,我不想拿完整厚本定义出来压人)

发帖数: 1
3
来自主题: Military版 - 什么是代数
其实代数指的是一种结构,其范围是非常广的。
譬如:
半群,Monoid, 群;
半环,[交换,非交换]环,域;
半模,模,向量空间,李群,李代数;
范畴…
都是代数结构。
E*****m
发帖数: 25615
4
A monad is just a monoid in the category of endofunctors, what's the problem
?
m*****t
发帖数: 239
5
来自主题: Parenting版 - 什么时候给孩子引入方程概念

说实话,我对自然数本身的foundations不是很熟...这个可以说是自然数乘法的定义(
或者说整数乘法,因为可以从此直接推导出负数的乘法),但是它需要两点:1.每个自
然数都可以由1+1+...1而形成; 2. 1+1+...+1 =0的情况永不发生。换句话说,从加减
法角度来说,整数是由一个generator所造成的free abelian group(自然数+0是一个
generator所造成的free abelian monoid)
如果是这样的话,我想了想,乘法的定义应该可以从generator自乘来产生,不过一旦
负数存在,那么整数就有两个generators,还有一个-1,如果定义
(-1)*(-1) = -1,(或者1*1=-1)
那么用这个方式也可以推导出另一种整数的乘法方式*,这种乘法用通常乘法*的表达
方式是
a*b=-(a*b)
这也是一个ring structure,其中的multiplicative identity是-1。(而如果定义1*1
=2或者其它整数,那么也可以得到一个乘法方式,但是没有multiplicative identity
。)
个人... 阅读全帖
c******o
发帖数: 1277
6
来自主题: Programming版 - scala 的感悟
用了几个月scala. 说一下我的感觉
scala是一个general purpose language, 它有足够的工具解决绝大部分项目和问题。
scala不是一个all purpose language,它明显在很多领域只是可以用而已。大部分领域
有更好的语言了。
我的感觉是,scala最适用于:
1. 多并发,大规模的后端,很好的支持并发。
2. 分布式系统,高可用性,高容错,分布式实现容易。
3. 复杂逻辑后端,有很多很好的抽象方法可以选用,用的好,可以很干净。
4. 各种专业的库,是一个很好的建库的语言,当然,要求也高。
这些主要是因为:
1. FP和OO的融合使得scala有很强大的标准库支持,也很容易使人迷惑, 看看那个
play的Json library, 很强大,也很囧。
2. FP和OO的融合使得scala有很多种抽象的方法,很强大,但是也很容易被滥用,太多
pattern可以用来干同一件事。
3. 静态类型和type inference使得scala很适合大型,复杂的系统,高效的系统,也能
够写出比较简洁和干净的代码,要是不注意,容易影响可读性。
4. 调用jav... 阅读全帖
c******o
发帖数: 1277
7
befor you realize it, this json api has monoid/monad/semigroup/functor in it

be
s*********b
发帖数: 815
8
来自主题: Programming版 - 你们有没有一种感觉,其实big data
简单的distributed count再好实现不过了。凡是属于monoid的操作都是程序猿的好朋
友。也有现成的DB做这个。您老是Netflix的,可以到go/logsummary,或者go/rt-doc
体验一下。;-)

a
c******o
发帖数: 1277
9
来自主题: Programming版 - 大牛给讲讲monad吧?
我想了一下,有好几个办法,比如说
1. inherit from List, override flatMap
2. create a type wrap List, and implicit conversion it <-> List, implement
flatMap and/or other methods, in the new type.
不过都好像是为了OO/java妥协,不是那么自然。
当然还有一个选项:
use scalaz, https://github.com/scalaz/scalaz
scalaz里面基本上实现了几乎全部抽象的haskell代数结构 (monoid, applicative,
functor, monad, arrow, comonad etc....)
那里有抽象的monad,可以比较自然好看的实现你要做的事
c******o
发帖数: 1277
10
来自主题: Programming版 - fp就是Declarative Programming
例子1: 用map/fold/join/filter/unit这几个基本函数组合起来就可以写出很复杂的
list
处理程序。
map 推得,这是一个functor
fold 推得,这是一个foldable 需要一个monoid来做fold
join 推得,这是一个monad, join和flapMap/bind等价
filter 推得,这是一种特殊的zero monad
unit 这个也是monad必有的,
有 unit的不一定是monad, 如果是unit + apply/map2/zip,而没有 join/bind 那么它
是是applicative functor
这些东西干什么用比较有用? 那就好长的话题了。。。
a*****e
发帖数: 1700
11
来自主题: Programming版 - scala和monad
能够很好地理解 continuation monad 和 free monad 你就入门了。用 scala 不需要
学习 monad transformer.
常见的还有 applicative 和 monoid,这两个都还比较简单。
a*****e
发帖数: 1700
12
来自主题: Programming版 - Scala有一点不好
我不是很理解你说的用 monad 描述 parsing 和 monad 表述 I/O 有什么关系,
是说 parser combinator 可以用 monad 实现吗?parser combinator 同样可以用
applicative 或者 arrows 实现,和 monad 的实现各有优劣。
我说 I/O compose like monads 前面还要加一个定语: sequential,这是因为需要
确保副作用发生的先后顺序。不加限制的 function composition 做不到这点,但
不加限制的 monad composition 可以做到这点。
而且 text composition 明显是个 monoid,先后顺序不重要,结果一致就好。
为什么说 sequential I/O 可以用 Monad 表述,是因为 sequential I/O 之间的
composition 满足 monad laws,而不是源程序可以写成什么样子,同时它也
不依赖于语言本身的求值顺序等特征。
q*c
发帖数: 9453
13
来自主题: Programming版 - 关于变量
我知道他们特别理解尾递归啊, monoid 这些东西,对吧?
n*w
发帖数: 3393
14
来自主题: Programming版 - Generator其实就是monad
f#的 let!, do!和use!desugar后就是bind。yield和yield!分别是yield和yieldfrom
。用来产生多个结果(monoids)。这个是其和haskell monad不同点之一。
b***e
发帖数: 1419
15
来自主题: Programming版 - Generator其实就是monad
Sounds like a built-in list monad. Yes, list monad is a singlarity in the
context of node.js. Node.js can only support it if a generator object can
be cloned. I didn't figure out how to do that. But I think list monad (aka
monoids) is more confusing than useful to most people most of the time.

yieldfrom
m******0
发帖数: 33
16
来自主题: Mathematics版 - 10年的fields现在有候选么
在ias去年的special program上,lurie 作的是ias最高等级的Marston Morse
Lectures,把witten都挤到了一边,说明他的工作得到了ias大佬的承认,而且他的
Derived Algebraic Geometry与topological field theory密切相关,象前几届的M.
Kontsevich,Andrei Okounkov的工作都是和物理有密切联系的,更容易获得一些数学
大佬的青睐。
下面是Peter Teichner对Jacob Lurie最新工作Expository article on topological
field theories的解读(270: Hot Topics Course on Spaces of TFTs)
We’ll study the space of topological field theories as defined by Mike
Hopkins and Jacob Lurie. These are symmetric monoidal d-functors from
N**G
发帖数: 392
17
为什么P.Balmer也给45分钟,我觉得他跟Jacob Lurie 还是有很大差距的吧……
P.Balmer对symmetric monoidal triangulated(SMT) category定义了specturm,定义
spectrum的一个目的就是SMT version的reconstruction theorem.或许是对群的模表示
的研究有促进?
S*********g
发帖数: 7653
18
来自主题: Mathematics版 - 选课求助。哪门课最难?

一部分agree.我所谓的这个“清楚”,考虑下面这个例子
比如D-modules, sheaf of modules over differential operators on scheme. 考
虑category of quasi coherent D-modules on P^1. 恩,这个玩意显然是可以从local
的glue到global的,也就是说,如果想看“清楚”这个粘differential operators是怎
么样
的,那就开始具体算在两个open sets(A^1)上,这个algebra of differential
operators是什么样的,(两个First Weyl algebra),然后算intersection上的,然后
定义
出那个transition isomorphism,然后沿着这个isomorphism 粘上去。恩,这样很清楚
不过从另一个角度来说,这实际上是由于没“看清楚”这个D-modules到底是个什么玩
意,才这么
deeply involved到这个细节中,实际上category of quasi coherent D-mo... 阅读全帖
x********i
发帖数: 905
19
来自主题: Mathematics版 - 2016华人数学家大会Invited Lectures
http://iccm.mcm.ac.cn/dct/page/1
Invited Lectures
Group 1
Fan Qin: Cluster algebras and monoidal categorification
Fang Li: Positivity of acyclic sign-skew-symmetric cluster algebras via
unfolding method and some related topics
Cheng-Chiang Tsai: An attempt for affine Springer theory
Li Cai: The Gross-Zagier formula: arithmetic applications
Ming-Hsuan Kang: Geometric zeta functions on reductive groups over non-
archimedean local fields
Huanchen Bao: Canonical bases arising... 阅读全帖
G********d
发帖数: 10250
20
define a polynomail
P(x1,...,x30)=(x1+x2+...+x30)^50
The answer to your original question is
The sum of coefficients of all monoids containing all x1 ... and x30
1 (共1页)