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

阅读更多
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.

你可能感兴趣的:(C,C++,C#,Erlang,Java)