`

erlang一小步

阅读更多

昨天打印了Joe Armstrong的《programming Erlang》,迫不及待地开始了阅读。本想写读书笔记,发现JavaEye的hideto早就写过了,作罢,学习他。今天迈开erlang的第一小步。

 

1下载并安装

fedora的安装我上篇说过了。今天在windows下搞。http://www.erlang.org/download.html 下载Sept 3, 2008 R12B-4 (最新的Nov 5, 2008 R12B-5 下载时发现有木马,没敢下)。

 

2创建所需目录和文件

安装完毕后,在c盘,我创建了erlwork目录。根据书里的例子,在erlwork目录下,创建一个文件geometry.erl,内容如下:

-module(geometry).
-export([area/1]).
area({rectangle,Width,Ht}) -> Width * Ht;
area({circle,R}) -> 3.14159 * R * R.

 

这个模块的功能很简单,计算矩形和圆形的面积。第一句是定义模块名称,第二句是告诉编译器,我有一个函数,名叫area,它有1个参数。

 

3执行测试

开始-程序-Erlang OTP R12B-Erlang 打开编辑器,出现如下提示:

Erlang (BEAM) emulator version 5.6.4 [smp:2] [async-threads:0]

Eshell V5.6.4  (abort with ^G)

 

我们检测一下当前工作的目录(类似eclipse的workspace的概念),输入:
1> pwd()
1> .
C:/Program Files/erl5.6.4/usr
ok

 

刚开始使用erlang,总忘记在结束的时候输入. 只好折行再补充。

这个目录不是我们需要的。我们改到c盘的erlwork目录,输入:
2> cd("c:/erlwork").
c:/erlwork
ok

 

好了,现在开始干活。首先编译我们的erl文件,编译好后将出现一个.beam文件。

完全类似.java文件编译成.class文件。输入:
3> c(geometry).
{ok,geometry}

 

现在编译好了,erlwork中有了geometry.beam这样一个文件。

erlang是函数编程语言,开始测试我们的函数吧。
4> geometry:area({rectangle,10,5}).
50
5> geometry:area({circle,1.4}).
6.157516399999999

 

第一个测试成功。

 

再来看一个:

 

定义一个list:

1> L=[1,2,3,4].
[1,2,3,4]

定义一个匿名函数Double:
3> Double=fun(X) -> 2* X end.
#Fun<erl_eval.6.13229925>

 

利用erlang函数库和那个名叫Double的Funs,计算我们定义好的名叫L的list
4> lists:map(Double,L).     
[2,4,6,8]

 

效果不错。

 

今天迈出去第一小步。感觉erlang的冲击力太大了,完全和面向对象编程不同,这种感受很折磨人,同时也很刺激。

当看到erlang使用递归玩for循环时,感觉high得不行。

ok,今天就到这里。

分享到:
评论

相关推荐

    erlang-mk-minimal:基于 RJ 的演示“poke”应用程序(https),使用 kerl、erlang.mk 和 relx 生成最小的 erlang 版本

    使用 kerl、erlang.mk 和 ...第 1 步 - 使用 kerl 创建一个 erlang 虚拟环境: Kerl 应该安装在你的路径上。 $ kerl list builds 17.1,17.1 17.1,17.1crypto64 R14B03,R14B03 我们已经在这台机器上提供了 3 个版本。

    mkr:µKanren在Lisp风味Erlang中的实现

    它是一种很小的关系编程语言,在Jason Hemann和Daniel P. Friedman的超级有趣的教程认真的科学出版物的定义。我可以运行在合理的策士在练习mkr ? 是的! 您可能需要小心,因为conde实际上交错流,像condi从理由...

    Rabbit详细使用手册

    - **第一步:下载安装包** - Erlang: `http://www.erlang.org/download/otp_win32_R16B01.exe` - RabbitMQ: `http://www.rabbitmq.com/releases/rabbitmq-server/v3.1.5/rabbitmq-server-windows-3.1.5.zip` - **...

    RabbitMQ安装帮助文档

    ### RabbitMQ环境搭建与使用详解 #### 一、RabbitMQ概述 RabbitMQ是一款开源的消息中间件,基于AMQP(Advanced Message Queuing ...对于初学者来说,了解并掌握RabbitMQ的基础安装和使用模式是非常重要的第一步。

    魔兽争霸:一种分布式多人浏览器游戏

    战舰 该存储库不再维护。 我正在开发下一个版本的战机。 我希望升级游戏的许多功能(内部和外部),但保持核心游戏玩法不变...erlang otp 18+ 节点+ npm 使用说明 git clone https://github.com/jbreindel/battlecraft

    kissy模块化实践

    随着时间推移,开发者开始意识到将不同类型的代码分离的重要性,如将JavaScript代码外置到单独的.js文件中,通过`&lt;script&gt;`标签引入,这标志着前端代码进化的第一步。 然而,简单的分离并不能完全解决大型项目中的...

    t_七个小矮人_8_tech_overview1

    在进行移动应用和Web应用开发时,技术选型是至关重要的第一步,它决定了项目的开发效率、可维护性和扩展性。以下是对标题和描述中涉及的一些关键知识点的详细解释: 1. **开发语言框架** - **Android**:主要使用...

    Scala_Scala编程

    例如,学习Scala的第一步可能包括学习如何使用Scala解释器、定义变量和函数,以及编写Scala脚本。随着学习的深入,学习者将接触到更高级的主题,如参数化数组、列表、元组、集合、函数式风格的编程、文件读取等。 ...

    blue_heron:在Elixir中使用Bluetooth LE

    Elixir是一种动态类型的函数式编程语言,运行在 Erlang VM (BEAM) 上,以其并发性和容错性而著名。由于Erlang VM的设计,Elixir非常适合构建高可用、分布式和实时系统。在IoT领域,Elixir可以通过`blue_heron`这样的...

    pushex:为Elixir推送通知

    Elixir 是一种基于 Erlang VM 的现代、并发、函数式编程语言,它以其高效和可扩展性在构建分布式系统时受到青睐。`pushex` 库允许开发者方便地集成 Apple Push Notification Service (APNS) 和 Google Cloud ...

    efluentc:efluentc是Fluentd的客户端OTP应用程序

    efluentc的设计是使其更快地发送一次缓冲的某些消息,并减少传输次数。 如果您看到突发流量导致的性能下降,我建议您增加流利客户端的并发性。 efluentc具有刷新消息的时间间隔和缓冲区大小,您可以调整这些内容...

Global site tag (gtag.js) - Google Analytics