容错、分布、并发、多核
==================1==============
COP:Concurrency Oriented Programming 面向并发编程
lists、io、file、dict、gen_tcp
Mnesia:Erlang的发行版包含的一个内置的、完整的、快速的、可复制的数据库
16#cafe*32#sugar %%使用16进制和32进制记号
X = 123 %%所有的变量都必须以大写字母开头
X 不是一个变量,至少不是在Java或者C当中的那种变量
= 不是一个赋值操作符,而是模式匹配运算符
Lhs = Rhs %%对右端求值(Rhs),然后将结果与左端(Lhs)进行模式匹配
Erlang是一个函数式语言,不存在可变状态。没有可变状态,也就没有共享内存,更没有锁,着一切都有利于并行化程序的编写
"/" 永远返回浮点数
N div M. %%整数除
N rem M. %%取余数
原子 :在erlang中,用来表示不同的非数字常量值。Erlang中的原子是全局有效的,无需使用宏定义或者包含文件
原子是一串以小写字母开头,后跟数字字母或下划线(_) 或邮件符号(@) 的字符。使用单引号(' ')引起来的字符也是原子。
使用单引号,就可以使得原子可以用大写字母作为开头或者包含非数字字符
==============================================
元组(tuple):
F = {firstName, joe}.
L = {lastName, armstrong}.
P = {person, F, L}.
Person = {person, {name, {first, joe},{last, armstrong}},{footsize,42}}.
{_,{_,{_,Who},_},_} = Person.
Who.
=======================================================
列表:将若干个以逗号分割的值用一对方括号括起来,就形成了一个列表
head:列表的第一个元素
tail:从列表中移除头,剩下的就是列表尾
[1, 2, 3, 4, 5]. 列表头就是整数1,尾就是 [2, 3, 4, 5]
如果T是一个列表,那么[H|T]也是一个列表,这个列表以H为头,H为尾。
[] 空列表
========================================
字符串:严格讲,Erlang中并没有字符串,实际上是一个整数列表。用双引号将一串字符括起来就是一个字符串
可以使用$符号来表示字符的整数值 $a
==============================================================
备注:命令f()会让shell释放它所绑定过的所有变量。执行这个命令后,所有的变量都变成了自由变量。
=============================================================
顺序型编程
模块是Erlang中代码的基本单元,模块文件同城存放在以.erl为扩展名的文件中,编译成功之后的模块文件其扩展名是.beam
逗号(,) 用来分隔函数调用,数据构造器以及模式中的参数
句号(.)(后跟一个空白符)用来在shell中分隔完整的函数和表达式
分号(;)用来分隔子句,在这几种情况下都会用到子句:分段的函数定义,case语句,if语句, try...catch语句以及receive表达式
函数的目(arity)就是函数所拥有的参数数量
sum(L) -> sum(L, 0).
sum([], N) -> N;
sum([H|T], N) -> sum(T, H+N).
fun就是匿名函数