Erlang语言学习入门
近期研究RabbitMQ,发现它是基于Erlang实现的,于是对Erlang这么语言发生了兴趣,官网地址 http://www.erlang.org/ ,去下载一个最新的版本,我下载的是5.9.1版本,Windows版本R15B01 Windows Binary File (90.7 MB) , 下载后一路解压安装即可,不用单独做什么设置,Erlang语言就可以使用了,然后就可以开始使用它里面的 Eshell程序 进行编程。
这是一个命令行程序,可以直接在里面输入表达式进行计算,例如来一个简单的:
Erlang R15B01 (erts-5.9.1) [smp:4:4] [async-threads:0]
Eshell V5.9.1 (abort with ^G)
1> 100+300.
400
2>
注意在语句的结尾输入“.”以表示完成,回车就开始计算结果了,如上面所示。
下面,我们用记事本写一个阶乘的Erlang程序:
-module(test).
-export([fac/1]).
fac(0) -> 1;
fac(N) -> N * fac(N-1).
这个程序定义了一个叫做 “test”的模块,里面包含一个名字叫做fac的函数,该函数有1个参数。
按照Erlang的约定,文件名必须跟模块名称一致,于是我们将这个文件保存为 “test.erl”,文件保存在D:test1目录下。
问题来了,怎么运行这个文件呢?使用 cd 方法,改变Erlang当前的工作路径:
2> cd("d:/test1").
d:/test1
ok
3>
然后编译刚才的程序文件:
ok
3> c(test).
{ok,test}
4>
注意,编译命令c 的参数写 明文件里面定义的模块名称即可,也不用加双引号。编译后,将在当前工作目录下面生成文件“test.beam”
然后,可以执行模块中的方法了:
4> fac(10).
** exception error: undefined shell command fac/1
5> test:fac(10).
3628800
6>
注意,这里是使用自定义的“外部模块”,所以执行的时候需要写明 模块名称:方法名称(参数)。
如果下次需要重新加载编译好的程序怎么办?
很简单,使用 l(模块名称) 即可,如下例:
6> l(test).
{module,test}
7> test:fac(4).
24
8>
到此为止,安装、编写、编译、运行、加载 一个Erlang 语言程序的全过程就完成了,入门过程还是很简单吧?
Erlang 学习参考:
Erlang Programming拾零
用Erlang实现领域特定语言
另外安装后,它本身的帮助文档也比较全面,初学已经完全够用了。
- SparkMLlib的数据类型讲解
- java lambda表达式
- kylin集群Nginx负载均衡
- Java 8 Stream 教程 (一)
- Python文档精要研读系列(1):map函数
- SparkML模型选择(超参数调整)与调优
- visual studio 2012 的制作ActiveX、打包和发布
- 用java提交一个Spark应用程序
- 一步步教你利用Github开源项目实现网络爬虫:以抓取证券日报新闻为例
- 用linqPad帮助你快速学习LINQ
- Java 8 Stream 教程 (二)
- CountVectorizer
- Caliburn.Micro学习笔记(五)----协同IResult
- 一个Pythoner的自我修养系列(一)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ZooKeeper的伪分布式集群搭建以及真分布式集群搭建
- zookeeper权限acl与四字命令
- 微信公众号开发-素材/消息管理接口
- 微信开发的一些神坑
- Spring Boot集成ElasticSearch实现简单的增删查改接口
- Spring Cloud Zuul 综合使用
- Spring Cloud Hystrix - 服务容错
- 记一次内存溢出问题的排查、分析过程及解决思路
- Spring Cloud Sleuth + Zipkin 实现服务追踪
- Docker化你的SpringBoot项目
- 微信公众号开发者模式介绍及接入
- SpringBoot2.x整合MyBatis
- 使用微信测试账号对网页进行授权
- Spring JMS的使用
- 使用Java编写ActiveMQ的队列模式和主题模式