Programming Erlang(基础笔记) 奇葩点

容错、分布、并发、多核

==================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就是匿名函数

  

 

posted @ 2017-06-14 16:33  tianxincode  阅读(261)  评论(0编辑  收藏  举报