Erlang for C, C++ and Java Programmers [zz]

本文探讨了Erlang语言的独特之处,包括原子的使用、模式匹配、函数替换以及链表操作的特点。此外还讨论了Erlang如何通过模式匹配和不可变变量避免副作用,以及这些特性如何与DDD理念相呼应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://npt.cc.rsu.ru/user/wanderer/ODP/Erlang_tutorial.html

Atoms are used in places where in C one might define a constant

the = operator doesn't in fact mean assign, it means "match with".

-- match with -- unify 合一,prolog 里面的合一

the -> construct should be read as "evaluates to".

-- prolog 用 -> 表示替换

test(A) -> 1.

test(int a) {
return 1
};


This would be the idiomatic way to write this in Erlang, and in fact (in R8B) is evaluated more quickly than the case statement.

-- switch 语句可以使用函数来替换。c++ 的重载函数,多态体现在数据类型方便,Erlang 体现在数据值方面。

-- prolog 在求解过程中,使用 -> 替换进行穷举尝试。替换的依据是 rule 。

-- 在 list 中加入一个 item 。按 c++ 常规链表的实现方式,如果加入的 item 放到链表的最前面,那么只需要这个新的 item 指向原来的头部,而这个新的 item 成为新链表的标识。这样也就没违反 Erlang 的变量只能赋值一次的限制。

-- 但如果要插入一个 item 到链表中,那么就会引起连锁反应。假设链表已经有 2 个 item ,新 item 要插入到中间。那么除了最后一个 item 不需要改变之外,最前面的 item 需要改变它的 next 指针的指向,所以这个插入操作导致 copy 最前面的 item 。如果链表不止有两个 item ,那么一旦进行这样的插入,在插入点之前的所有 item 都会导致要 copy 一次。

-- Erlang 中变量只能赋值一次,同 DDD 中讲的 Query 和 Command 分离的想法很相似,都是避免副作用(side effect)。

Wings3D hold a list of funs which it uses as a stack.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值