由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - clojure高手请进
相关主题
clojure和common lisp区别大么,语法上。FP的死穴还是性能
对 (im)mutability 的误解和深度理解FP是不是把OOP里面的类成员变量去掉,只剩下成员函数?
这次Clojure把Scala给干了函数式语言是不是特别费系统资源?
支持我的JS OOP观点的文章来了问达人一个shared memory 的问题
有人用clj写web么?比如用luminus,ring这些框架这年头有哪几个公司是用函数式编程的呢?
1st class citizen有没有喜欢haskell的同学
FP更接近人的思维最近在用clj干活。顺便看了看macro 倒吸一口冷气。
go channel和clojure core.async哪个好Clojure上手123
相关话题的讨论汇总
话题: atom话题: cordinated话题: 请进话题: clojure话题: 函数
进入Programming版参与讨论
1 (共1页)
T******7
发帖数: 1419
1
atom这个概念怎么理解比较好?只能用在non side effect的函数里?
p*****2
发帖数: 21240
2

atom应该是有side effect的吧?

【在 T******7 的大作中提到】
: atom这个概念怎么理解比较好?只能用在non side effect的函数里?
h*i
发帖数: 3446
3
atom很简单,可以把atom理解成其他编程语言里面的变量(mutable),更确切的说,它
很像C里面的指针,但是tread safe的。
初学者要记住swap!的时候不是传新的值进去就行,而是要传一个函数进去,来转换旧
的值。这个转换函数必须是没有副作用的,因为可能别的线程也在访问这个atom,这个
转换函数可能会被试几次才成功。
用到atom的时候记得deref,@,所以我说它像指针。
atom可以用在任何地方。但idomatic的用法,是用来做可变状态的容器。比如写一个非
常简单的小游戏的话,可以把整个游戏世界的状态用一个map来描述,然后把这个map放
到一个atom里面;再比如数据库连接的状态,也可以放入一个atom里面。等等。

【在 T******7 的大作中提到】
: atom这个概念怎么理解比较好?只能用在non side effect的函数里?
T******7
发帖数: 1419
4
多谢@hci
我看书上说 atom是 Uncoordinated的。
ref 是 cordinated.
这里的cordinated 的意思是不是就是说支持compound operations?
h*i
发帖数: 3446
5
refs的操作必须在transaction里面进行。coordinated的是说,在一个transaction里
面,各个refs的操作要么都成功,要么都不成功。和数据库的transaction一样的。
atom没有上面的特性。

【在 T******7 的大作中提到】
: 多谢@hci
: 我看书上说 atom是 Uncoordinated的。
: ref 是 cordinated.
: 这里的cordinated 的意思是不是就是说支持compound operations?

1 (共1页)
进入Programming版参与讨论
相关主题
Clojure上手123有人用clj写web么?比如用luminus,ring这些框架
在看the effective C++language1st class citizen
What's a transaction.FP更接近人的思维
Volatile variables do not provide any atomicity (转载)go channel和clojure core.async哪个好
clojure和common lisp区别大么,语法上。FP的死穴还是性能
对 (im)mutability 的误解和深度理解FP是不是把OOP里面的类成员变量去掉,只剩下成员函数?
这次Clojure把Scala给干了函数式语言是不是特别费系统资源?
支持我的JS OOP观点的文章来了问达人一个shared memory 的问题
相关话题的讨论汇总
话题: atom话题: cordinated话题: 请进话题: clojure话题: 函数