Erlang程序设计(第2版)读书笔记:Erlang安装和基础语法

正如《代码的未来》中所说,为了充分利用多核,并发变成将成为未来发展的趋势,对于并发编程的支持,Erlang确实是不二之选,Erlang在国内仍然较为小众,经典书籍相对也要少很多,最终选择了《Erlang程序设计 第2版》作为了我的第一本Erlang入门书籍。

Erlang官方网站:http://www.erlang.org/

Erlang安装:

对于Ubuntu和Debian发行版可采用:apt-get install erlang 来安装;

对于其他 UNIX 和 Linux 平台,可以下载源代码并手工构建它,具体如下所示:

Download:http://www.erlang.org/download.html

代码如下:

1. 解压源代码:$ tar zxf otp_src_17.3.tar.gz
2. $ cd opt_src_17.3
3. $ ./configure
4. $ make
5. $ make install

Erlang是函数式编程语言,被设计主要用来解决自下而上的编写并发式、分布式、容错、可扩展和软实时系统等问题。

由于之前没有接触过函数式编程,还是从简单的顺序编程一步步来吧。

Erlang进入shell编程环境很简单,与Python类似,在终端直接输入erl即可,退出可使用 Ctrl+c 再输入 a 的方法,但这样可能导致某些数据的破坏,最好使用 q().

注释:%

变量:所有变量名都必须以大写字母开头,变量一经赋值,不许改变,

模式匹配操作:

  Lhs = Rhs 意思是计算右侧的值,然后将结果与左侧的模式相匹配;

  X = Expression,如果X之前没有被赋值,一定会匹配成功,X = AnotherExpression,则只有在Expression = AnotherExpression时才匹配成功,否则匹配失败;

浮点数:

  使用“/”给两个整数做除法时,结果会自动转换为浮点数;

  要从除法里获得整数,必须使用div和rem;例如:5 div 3. 结果为1,5 rem 3. 结果为2;

原子:

  原子被用于表示常量值,具有全局性,原子以小写字母开头,后接一串字母,数字,下划线或@符号;

  原子可以放在单引号中,可以创建以大写字母开头或包含字母数字以外字符的原子,如:‘Monday',‘+',‘a test paper'等,原子的值就是它本身;

元组:

  为了方便理解,元组最好加上标签,例如:{point, 10, 45}.

  创建元组:F = {firstName, joe}. L = {lastName, Tom}. P = {person, F, L}.

  提取firstName:{_, {_, Who}, {_, _}} = P.

列表:

  列表中的各元素可以是任何类型,[H|T]中H为列表头,T为列表尾,例如:

  L = [{name, tom}, 1, 2.0, test, {point, 10, 23}].

  [H|T] = L.

  则,H = {name, tom}, T = [1, 2.0, test, {point, 10, 23}].

字符串:

  字符串字面量就是用双引号围起来的一串字符,例如:

  N = "Hello". "Hello"其实只是一个列表的简写,这个列表包含了代表字符串里各个字符的整数字符代码。

  X = [97, 98, 99] .

  打印出"abc".

  io:format("~w~n", ["abc"]).

  打印出[97, 98, 99]

  [H|T] = "cat".  H = 99, T = "at".

f()让shell忘记现有的任何绑定。

(0)

相关推荐

  • Erlang程序设计(第2版)读书笔记:Erlang安装和基础语法

    正如<代码的未来>中所说,为了充分利用多核,并发变成将成为未来发展的趋势,对于并发编程的支持,Erlang确实是不二之选,Erlang在国内仍然较为小众,经典书籍相对也要少很多,最终选择了<Erlang程序设计 第2版>作为了我的第一本Erlang入门书籍. Erlang官方网站:http://www.erlang.org/ Erlang安装: 对于Ubuntu和Debian发行版可采用:apt-get install erlang 来安装: 对于其他 UNIX 和 Linux 平

  • javascript学习笔记_浅谈基础语法,类型,变量

    基础语法.类型.变量 非数字值的判断方法:(因为Infinity和NaN他们不等于任何值,包括自身) 1.用x != x ,当x为NaN时才返回true; 2.用isNaN(x) ,当x为NaN或非数字值时,返回true; 3.用isFinity(x),在x不是NaN.Infinity.-Infinity时返回true; 虽然(字符串.数字.布尔值)不是对象,他们的属性是只读的,但也可以像操作对象一样来引用他们的属性和方法,原理: javascript构造一个(String.Number.Boo

  • Python学习笔记(二)基础语法

    学习Python,基本语法不是特别难,有了C的基本知识,理解比较容易.本文的主要内容是Python基础语法,学完后,能熟练使用就好.(开发环境依然是Python2.7,简单使用)一,基本知识1,不需要预先定义数据类型(此说法值得商榷,姑且这么说吧),这是与其他语言的最大不同(如C,C++,C#,Delphi等) 复制代码 代码如下: >>> x=12 >>> y=13 >>> z=x+y >>> print z 25 注意:尽管变量不

  • javascript高级程序设计(第三版)学习笔记(一) 正则表达式整理

    1.创建正则表达式 第一种方式:注意这里的正则表达式不能使用单引号或者双引号,如下 var pattern1 = /[abc]/i; // 匹配第一个"a"或"b"或"c",不区分大小写 第二种方式:使用RegExp构造函数创建,该构造函数传入两个参数,都是字符串,所以需要特别注意"\"符号的转换,所有元字符(下面有讲元字符)需要双重转义,如下 复制代码 代码如下: var patt1 = new RegExp("[

  • JavaScript 权威指南(第四版) 读书笔记

    Javascript是无类型.解释型语言 对大小写敏感 html对大小写不敏感 忽略空格符.制表符.换行符(关键字.变量.正则表达式 除外) ";"分号可选择 //单行注释 /*多行注释*/ 标示符 开头必须是字母.下划线.$符号 关键字: break delete function return typeof case do if switch var catch else in this void continue false instanceof throw while debu

  • JavaScript高级程序设计 读书笔记之八 Function类及闭包

    Function类 定义 Function类可以表示开发者定义的任何函数,用Function类直接创建函数的语法如下: var function_name=new Function(agrument1,agrument2,...,argumentN,function_body); 每个argument都是一个参数,最后一个参数是函数主体(要执行的代码). 示例: 复制代码 代码如下: function sayHi(sName,sMessage){ alert("Hello "+sNam

  • InnoDb 体系架构和特性详解 (Innodb存储引擎读书笔记总结)

    后台线程 •Master Thread 核心后台线程,主要负责将缓冲池的数据异步刷新到磁盘.例如脏页的刷新,插入缓冲的合并,undo 页的回收等. 每秒一次的操作: 1.日志缓冲刷新到磁盘,即使该事务还没有提交.该操作总是会发生,这个就是为了再大的事务,提交时间都很短. 2.当IO压力很小时(1s内发生的IO次数小于5% innodb_io_capacity)合并5% innodb_io_capacity 的插入缓冲. 3.当脏页比例大于 innodb_max_dirty_pages_cnt,

  • MYSQL必知必会读书笔记第十和十一章之使用函数处理数据

     mysql简介 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理. 拼接字段 存储在数据库表中的数据一般不是应用程序所需要的格式.我们需要直接从数据库中检索出转换.计算或格式化过的数据:而不是检索出数据,然后再在客户机应用程序或报告程序中重新格式化. 计算字段(字段 = 列,不过数据库列一般称为列,而字段通常用于计算字段中)并不实际存在于数据库表中,计算字段是运行时在select语句内创建的

  • javascript框架设计读书笔记之种子模块

    1.命名空间: js里面的命名空间就是使用对象的属性来扩展的.比如,用户定义一个A对象,A对象下面有B属性和C属性,同时B属性和C属性又是对象.因此A={B:{},C:{}},这时用户就可以在B对象和C对象中定义一样的方法,属性了.因此B和C就属于不同的命名空间.我们调用B,C对象里面的方法,就可以通过A.B.like(),A.C.like()调用了.当然A属于window对象中的属性. 但是有一种情况,比如:boke.jsp页面引入了jquery.js以及prototype.js(他们都会在w

  • PHP读书笔记_运算符详解

    什么是运算符 什么是运算符?运算符是告诉PHP做相关运算的标识符号.例如,你需要计算123乘以456等于多少,这时候就需要一个符号,告诉服务器,你需要做乘法运算. PHP中的运算符有哪些?PHP运算符一般分为算术运算符.赋值运算符.比较运算符.三元运算符.逻辑运算符.字符串连接运算符.错误控制运算符. PHP中的算术运算符 算术运算符主要是用于进行算术运算的,例如:加法运算.减法运算.乘法运算.除法运算.在PHP中的常用的算术运算符对应下表: PHP中的赋值运算符 PHP的赋值运算符有两种,分别

随机推荐