语法:
1.模式匹配:=表示一个模式匹配操作。Lhs=Rhs实际上是这样一个过程,对右端求值(Rhs),然后将结果与左端(Lhs)进行模式匹配。
逗号(,)用来分隔函数调用,数据构造器以及模式中的参数。
句号(.)(后跟一个空白符号)用来在shell中分隔完整的函数和表达式。
分号(;)用来分隔字句。如分段的函数定义,case语句,if语句,try...catch语句以及receive表达式。
原理:
1.Erlang采用消息模型,进程之间不共享任何数据,完全避免了引入锁的必要。对于多核而言,完全无锁。
2.COP(面向并发编程):进程+消息的模型来建模现实世界中多人协作的场景。一个进程表示一个人,人与人之间并不存在任何共享的内存,彼此之间的协作完全通过消息交互来完成。
3.Erlang工作机制:
loop() -> receive {From,{rectangle,Width,Ht}} -> From ! {self(),Width * Ht}, loop(); {From,{circle,R}} -> From ! {self(),3.14 * R * R}, loop(); {From,Other} -> From ! {self(),{error, Other}}, loop() end.编译尾递归的函数可以使在一系列语句最后的一个函数调用,可以被替换为一个简单的跳转指令,指向被调用函数的开头。这就意味着一个尾递归的函数可以无限而不需要消耗栈空间。