这是一个命令行程序,可以直接在里面输入表达式进行计算,例如来一个简单的:


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实现领域特定语言

另外安装后,它本身的帮助文档也比较全面,初学已经完全够用了。

Erlang语言学习入门的更多相关文章

  1. go语言学习入门篇1---go语言的主要特性与发展

    1.1 影响 Go 语言发展的早期编程语言 正如 "21 世纪的 C 语言" 这句话所说,Go 语言并不是凭空而造的,而是和 C++.Java 和 C# 一样属于 C 系.不仅如此 ...

  2. [置顶] C语言学习入门

    编译文件:cc -c one.c two.c  生成.o目标文件 链接文件:cc one.o two.o     默认生成 a.out 执行文件 指定生成的可执行文件名   cc -o one one ...

  3. go语言学习入门篇 3-- 程序执行流程

    先看下 Go 语言的程序结构: package main // 当前包名 import "fmt" // 导入程序中使用到的包 // 初始化函数 func init() { // ...

  4. go语言学习入门篇 2--轻量级线程的实现

    很多有过 JVM 相关语言工作经验的程序员或许都遇到过如下问题: 超出 thread 限制导致内存溢出.在作者的笔记本的 linux 上运行,这种情况一般发生在创建了 11500 个左右的 threa ...

  5. 在Mac上使用vs-code快速上手c语言学习(入门文,老鸟退散)

    天下事,合久必分.分久必合,你肯定想不到当你逃离到Mac平台这么多年之后,有一天你会再用微软的产品来写代码 :) 其实微软的产品虽然用户体验总是做不到最好,但整体上的确拉低了行业的进入门槛,对于编程也 ...

  6. Erlang语言入门

    Erlang语言入门 下载Erlang,http://www.erlang.org/downloads 安装之后开始菜单中有Erlang图标,打开之后是Erlang Shell,可以定制喜欢的颜色和字 ...

  7. 《C语言入门1.2.3—一个老鸟的C语言学习心得》—清华大学出版社炮制的又一本劣书及伪书

    <C语言入门1.2.3—一个老鸟的C语言学习心得>—清华大学出版社炮制的又一本劣书及伪书 [薛非评] 区区15页,有80多个错误. 最严重的有: 通篇完全是C++代码,根本不是C语言代码. ...

  8. Swift语言快速入门

    Swift语言快速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著   ISBN 978-7-121-24328-8 201 ...

  9. 20155229-付钰涵-分析自我技能延展到c语言学习状况

    我的小技能 我记得幼儿园时表演的舞蹈,也记得从水彩到素描的学习,还记得小学和初中获得的钢琴省级奖项. 舞蹈止于一年级,绘画止于三年级,钢琴从学前班到高一那十年的时间里有过断续. 03年-04年的那个冬 ...

随机推荐

  1. TocControl控件图层无法显示问题

    在窗口里的层层嵌套SplitContainer后,出现最内层SplitContainer内部TocControl控件图层无法显示问题:加载完mxd后代后加上axTOCControl1.SetBuddy ...

  2. Ubuntu安装deb软件包错误(依赖关系问题)解决

    执行命令 sudo dpkg -i XXX.deb 返回依赖关系错误提示 执行 sudo apt-get -f install 这条命令将自动安装需要的依赖包. 再次执行命令 sudo dpkg -i ...

  3. C语言的工具集

    1. lint可以对c程序进行更加广泛的错误分析,lint不是缩写,它的命名是因为它像在程序中“吹毛求疵”,现在许多linux发行版都包括了它的增强版splint(Secure Programming ...

  4. Android Studio 更新gradle插件

    今天更新了CentOS, 更新了java版本. 然后gradle跪了..... 不吐槽java版本的兼容性问题了.... 反正有他自己的理由.... 那么就更新gradle咯.... 下面是方法... ...

  5. Java线程停止interrupt()方法

    程序是很简易的.然而,在编程人员面前,多线程呈现出了一组新的难题,如果没有被恰当的解决,将导致意外的行为以及细微的.难以发现的错误.在本篇文章中,我们针对这些难题之一:如何中断一个正在运行的线程. 中 ...

  6. 366. Fibonacci【Naive】

    Find the Nth number in Fibonacci sequence. A Fibonacci sequence is defined as follow: The first two ...

  7. 打印十字图 queue 搞定

    题目描述 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示: ..$$$$$$$$$$$$$.. ..$...........$.. $$$.$$$$$$$$$.$$$ $...$... ...

  8. 使用JSTL的xml:parse标签(或者说x:parse)出现异常NoSuchMethodError,找不到doc的setter method

    症状: 如题 <c:import var="hz" url="/xyz/abc.xml" charEncoding="UTF-8"/& ...

  9. 基于HTML5自定义文字背景生成QQ签名档

    分享一款利用HTML5实现的自定义文字背景应用,首先我们可以输入需要显示的文字,并且为该文字选择一张背景图片,背景图片就像蒙版一样覆盖在文字上.点击生成QQ签名档即可将文字背景融为一体生成另外一张图片 ...

  10. 针对16v554(ttyS0-15)的ttyAT0的login配置

    1 ## /etc/inittab# console::sysinit:/etc/init.d/rcSconsole::respawn:/sbin/getty -L 115200 ttyAT0 vt1 ...