lixr设计目标之一就是要确保兼容性,可以兼容Erlang和其生态系统。Elixir和Erlang 都是运行同样的虚拟机平台(Erlang Virtual Machine)。不管是在Erlang使用Elixir模块,还是在Elixir中使用Erlang模块都是非常方便的。

Erlang 调用 Elixir 代码

example.ex 文件代码如下:

定义了一个Example 模块,其中有一个sum函数返回两个数的和

defmodule Example do
def sum(x, y) do
x + y
end
end

要在Erlang可以调用这个模块,首先要编译这个模块到beam文件,beam是编译好的字节码文件
打开iex,编译这个模块

iex(1)> c("example.ex")
[Example]
iex(2)>

会在当前文件夹下生成 Elixir.Example.beam 文件

打开erl
使用l(file)函数加载Elixir写好的模块

1> l('Elixir.Example').
{module,'Elixir.Example'}
2> 'Elixir.Example':sum(2, 3).
3> 5

Elixir 调用 Erlang 代码

我们 example.erl 文件代码如下:

-module (example).
-export ([sum/2]). sum(A, B) ->
A + B.

可以直接在Elixir的iex中编译

iex(1)> c("example.erl")
[:example]
iex(2)>

也会生成 Elixir.Example.beam 文件

模块名以冒号开始,执行

 
iex(2)> :example.sum(2, 3)
5
iex(3)> 转自:https://segmentfault.com/a/1190000000472866

Erlang 和 Elixir 互相调用 (转)的更多相关文章

  1. Erlang 和 Elixir的差异

    原文: http://elixir-lang.org/crash-course.html 函数调用 Elixir允许你调用函数的时候省略括号, Erlang不行. Erlang Elixir some ...

  2. [Erlang 0108] Elixir 入门

    Erlang Resources里面关于Elixir的资料越来越多,加上Joe Armstrong的这篇文章,对Elixir的兴趣也越来越浓厚,投入零散时间学习了一下.零零散散,测试代码写了一些,Ev ...

  3. Install Erlang and Elixir in CentOS 7

    In this tutorial, we will be discussing about how to install Erlang and Elixir in CentOS 7 minimal s ...

  4. CentOS 7.7安装Erlang和Elixir

    安装之前,先看一下它们的简要说明 Erlang Erlang是一种开源编程语言,用于构建对高可用性有要求的大规模可扩展的软实时系统.它通常用于电信,银行,电子商务,计算机电话和即时消息中.Erlang ...

  5. [Erlang 0113] Elixir 编译流程梳理

    注意:目前Elixir版本还不稳定,代码调整较大,本文随时失效      之前简单演示过如何从elixir ex代码生成并运行Erlang代码,下面仔细梳理一遍elixir文件的编译过程,书接上文,从 ...

  6. [Erlang 0112] Elixir Protocols

    Why Elixir   为什么要学习Elixir?答案很简单,为了更好的学习Erlang.这么无厘头的理由? Erlang语法设计几乎没有考虑过取悦开发者,所以学习之初的门槛略高.对于已经克服了最初 ...

  7. erlang和ruby互相调用

    erlang调用ruby https://github.com/mojombo/erlectricity ruby调用erlang https://github.com/davebryson/rint ...

  8. [Erlang 0109] From Elixir to Erlang Code

    Elixir代码最终编译成为erlang代码,这个过程是怎样的?本文通过一个小测试做下探索.         编译一旦完成,你就看到了真相   Elixir代码组织方式一方面和Erlang一样才用非常 ...

  9. [Erlang 0114] Erlang Resources 小站 2013年7月~12月资讯合集

    Erlang Resources 小站 2013年7月~12月资讯合集,方便检索.     附 2013上半年盘点: Erlang Resources 小站 2013年1月~6月资讯合集    小站地 ...

随机推荐

  1. 一道综合练习题实践list及dictionary集合类

    定义一个员工的集合,对员工集合内的元素进行查询和删除.实现员工的签到和签退,要求如下: //A:每天只能签到一次 //B:签退前必须已经签到 //C:显示打卡记录 代码如下:员工信息类: using ...

  2. Telnet技术白皮书

    转:http://www.cnpaf.net/Class/Telnet/200705/19978.html Telnet的应用不仅方便了我们进行远程登录,也给hacker们提供了又一种入侵手段和后门, ...

  3. 设置cookie和查找cookie的方法

    1.设置cookie(名称,值,过期时间) function setCookie(key,value,d){ if(d === undefined){ document.cookie = encode ...

  4. javascript常见的数组方法

    1:Array对象用于在单个变量中存储多个值typeof(arrArr) 'object'var arr1 = [];//创建一个空数组eg:数组是个引用类型var a = [1,2,3];var b ...

  5. Private strand flush not complete错误

    Private strand flush not complete错误 (2013-10-22 11:04:58) 转载▼   分类: FAQ 最近的一个报表系统数据库,总是出现checkpoint ...

  6. 【重点突破】—— fetch()方法介绍

    前言:ant-design-pro的技术组成主要是react+redux+dva+antd+fetch+roadhog,dva在源码包index.js里面导出了fetch,但是如果不想使用fetch库 ...

  7. POJ3264 Balanced Lineup 【线段树】+【单点更新】

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 32778   Accepted: 15425 ...

  8. docker集群——初识Swarm

    为Docker构建原生的集群管理工具的计划早在2014年初就开始了,当时作为一个通信协议项目,称为Beam.之后,它被实现为一种后台程序,使用Docker API来控制异构化的分布式系统.项目重新命名 ...

  9. perl学习笔记——目录操作

    在目录书中移动 chdir 操作副改变当前的工作目录.它和shell中cd命令类似: chdir ‘/etc’ or die “cannot chdir to /etc:$1”; 注意:工作目录不能更 ...

  10. 小程序flex属性两边边距自适应

    使用flex属性两边边距自适应解决方案   Justify-content:center   文章来源:刘俊涛的博客 地址:http://www.cnblogs.com/lovebing 欢迎关注,有 ...