c******o 发帖数: 1277 | 1 这个我也看了好几遍,不如书(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 本身道理很简单
就是把多重线性写成单线性的一种写法
只是把各个分部展开来写的而已
然后可以扩展一下
张量积是一种用两个线性空间构造新线性空间的方法
(其实我觉得用这个方法理解张量比直接讲系数的运算更好理解)
可以类比于直和
直和和张良在表示论里是最基本的构造
这个地方可以升级一下
把所有线性空间放到一起做成一个范畴
由于直和和张良的存在,这个范畴有个特殊的名字(k-linear monoidal category)
其中k-linear对应直和这个运算,monoidal对应张量这个运算
于是自然的考虑该范畴的grothendieck group,张量在上面自然诱导一个环结构,这个
环也叫grothendieck ring 或者k ring.
当然k group上面可以有很多不同的乘法,张量定义的这个是最基本的
然后上面说的可以再升级,把线性空间换成各种奇葩东西的表示
相应的范畴以及k ring有好多好兴致,基本上90年代以后的表示论和数学物理有一大帮
人在搞这个
(请不要拿我上面说法中细微小错打我,我不想拿完整厚本定义出来压人) |
|
发帖数: 1 | 3 其实代数指的是一种结构,其范围是非常广的。
譬如:
半群,Monoid, 群;
半环,[交换,非交换]环,域;
半模,模,向量空间,李群,李代数;
范畴…
都是代数结构。 |
|
E*****m 发帖数: 25615 | 4 A monad is just a monoid in the category of endofunctors, what's the problem
? |
|
m*****t 发帖数: 239 | 5
说实话,我对自然数本身的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 用了几个月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 简单的distributed count再好实现不过了。凡是属于monoid的操作都是程序猿的好朋
友。也有现成的DB做这个。您老是Netflix的,可以到go/logsummary,或者go/rt-doc
体验一下。;-)
a |
|
c******o 发帖数: 1277 | 9 我想了一下,有好几个办法,比如说
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 例子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 能够很好地理解 continuation monad 和 free monad 你就入门了。用 scala 不需要
学习 monad transformer.
常见的还有 applicative 和 monoid,这两个都还比较简单。 |
|
a*****e 发帖数: 1700 | 12 我不是很理解你说的用 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 f#的 let!, do!和use!desugar后就是bind。yield和yield!分别是yield和yieldfrom
。用来产生多个结果(monoids)。这个是其和haskell monad不同点之一。 |
|
b***e 发帖数: 1419 | 15 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 在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
一部分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 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 |
|