erlang学习笔记

  • Erlang是一门函数式编程语言,具有不可变状态
  • Erlang的变量是一次性赋值变量(single-assignment variable)
  • 在Erlang里,变量的获得值是一次成功模式匹配操作的结果,=是一个模式匹配操作符
  • 在Erlang里,原子被用于表示常量值,原子是全局性的,以小写字母开头,还可以放在单引号内,一个原子的值就是它本身
  • 元组用于把一些数量固定的项目归组成单一的实体,用大括号括起,元组会在声明时自动创建,不再使用时则被销毁
  • 对于不感兴趣的变量,可以用_ 作为占位符,符号_被称为匿名变量
  • 列表用于存放任意数量的元素,用中括号括起,列表的第一个元素称为列表头,剩下的称为列表尾
  • Erlang中没有字符串,在Erlang中字符串被表示为一个由整数组成的列表或者一个二进制型,当字符串表示为一个整数列表时,列表里的每个元素都代表了一个Unicode代码点。可以用字符串字面量来创建这样一个列表,字符串字面量是用双引号围起来的一串字符。当shell打印某个列表的值时,只有当列表中所有整数都代表可打印字符才打印字符串字面量。
  • f()命令让shell忘记现有所有绑定
  • 模块和函数是构建顺序与并行程序的基本单元,模块包含了函数,而函数可以顺序或并行运行
  • -module(module_name)是模块声明,位于文件第一行,module_name必须与存放该模块的主文件名相同
  • export([func_name/1])是导出声明,Name/N这种记法是指一个带有N个参数的函数Name,N被称为函数的元数(arity),export的参数是由Name/N组成的一个列表,未导出的函数只能在模块内调用(相当于私有方法)
  • 逗号分隔函数调用,数据构造和模式中的参数
  • 分号分隔子句,例如函数定义,以及case,if,try…catch,和receive表达式
  • 句号分隔函数整体,以及shell里的表达式
  • Erlang中用于代表函数的数据类型被称为fun,操作其他函数的函数被称为高阶函数(higher-order function)
  • Erlang没有单独的布尔值类型,不过原子true和false具有特殊的意义,可以用来表示布尔值,可用的布尔表达式有四种:not, and, or, xor
  • 从R16B版开始,Erlang源代码文件都假定才用UTF-8字符集编码
  • Erlang中的数字不是整数就是浮点数,K进制整数使用K#Digits这种写法
  • 短路求值:orelse andalso
  • type用于类型定义, 如预定义的类型别名:-type term() :: any(). -type term() :: true | false. -type byte() :: 0..255. -type list() :: [any()].
  • 在Erlang里创建和销毁进程是非常快速的,进程间发送消息是非常快速的,可以拥有大量进程,进程不共享任何内存,完全独立,唯一的交互方式是消息传递
时间: 2024-10-03 17:36:16

erlang学习笔记的相关文章

Erlang 学习笔记

http://wenku.baidu.com/link?url=AUQR8Hn-e-fEB_lqjXsd8XfapWj1qAK7J05JoBXFib_LlSk5qSOTia8HIxNV1XkeZi-kHFsH18Qb9NED5PKiPb8h6oDFVR6KG75MUSYAAMm Erlang 学习笔记    一.Erlang语言特征重点  1.catch是返回表达式的值或者错误信息的元组 try…catch是可以捕捉不同的错误类型以及有流程控制  2.发送消息永远不会失败,如果尝试发送消息给一个

Erlang学习笔记(一)

概述 ================================= 前端时间学习cpp,感到有些疲惫,也感到了一些困惑,久思未解. 正好放松下自己,就拿起了erlang. erlang是一个高并发的编程语言,而且支持热部署,适合做DB server. 虽然erlang的计算能力相对于他的并发能力要逊色很多,但是erlang同时也提供了port.可以让C,C++等计算效率高的语言来完成这部分功能 过程 ================================= 看了orally的 <

Erlang学习笔记2

http://wgcode.iteye.com/blog/1007623 第二章 入门 1.所有的变量都必须以大写字母开头,如果要查看某个变量,只要输入变量的名字即可,如果一个变量被赋予值,就称为绑定变量,否则被称为自由变量,一开始所有变量都是自由的. 有一点像Java中的常量,这就是为什么用大写字母的原因. 2.  “=” 近似于一个赋值操作符,是一个模式匹配运算符,当X是自由变量未被赋值时“=”是赋值运算符,否则是模式匹配运算符. 3. “/”除号永远返回浮点数. 4. 原子用来表示不同的非

erlang学习笔记(shell命令)

erlang shell 命令: help(). 可以查看erlang shell内置命令. 比如:m(Mod),可以查看模块Mod. 待续..

erlang学习笔记(文件操作)

参考这里和这里了解到的文件操作的模块有很多:kernel下有:file,stdlib下有:filelib,filename,file_sorter.(具体查看官方文档)

Redis学习笔记~目录

redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hashs(哈希类型).这些数据类型都 支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排 序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更

thrift学习笔记

Thrift学习笔记 一:thrift介绍 Thrift是facebook开发的用来处理各不同系统之间数据通讯的rpc服务框架,后来成为apche的开源项目.thrift支持多种程序语言,包括Java,Python,Ruby,JavaScript,Node.js,Go,C,C++,C#,Erlang,Delphi,Perl,Php,SmallTalk,OCaml,Haxe,Haskell,D语言.Thrift采用IDL(Interface Defination Language)描述性语言来定义

[Golong]学习笔记(一) 基础知识

Go编程基础 Go的内置关键字(25个) 不多 break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continute for import return var Go的注释方法(和js一样) 单行注释: // 多行注释: /**/ Go程序一般结构 common_structure.go 通过 pack

SO_REUSEPORT学习笔记

SO_REUSEPORT学习笔记 时间 2015-02-12 16:50:00 BlogJava-技术区 原文  http://www.blogjava.net/yongboy/archive/2015/02/12/422893.html 主题 Socket 前言 本篇用于记录学习SO_REUSEPORT的笔记和心得,末尾还会提供一个bindp小工具也能为已有的程序享受这个新的特性. 当前Linux网络应用程序问题 运行在Linux系统上网络应用程序,为了利用多核的优势,一般使用以下比较典型的多