混合 Elixir 和 Erlang?

Posted

技术标签:

【中文标题】混合 Elixir 和 Erlang?【英文标题】:Mixing Elixir and Erlang? 【发布时间】:2013-12-16 14:00:20 【问题描述】:

我想在 Elixir 代码中使用一些 Erlang 结构。一种是 Erlang 列表推导。

我的一般问题是在 Elixir 中编码时是否有某种方法可以“下拉”来编写 Erlang 代码(就像你看到人们在 Ruby 或 TCL 或其他任何东西中嵌入 C 的方式)。我的具体问题(与一般问题有关)是我是否有可能在 Elixir 编码时以某种方式获得 Erlang 样式的列表理解。

如果使用普通的 Elixir 无法做到这一点,也许可以通过宏来完成(可能很难?)?我确实知道我可以只编写一个 Erlang 模块并从 Elixir 调用它,但这并不是我想要的。

【问题讨论】:

在 Elixir 中编写 Erlang-in-Elixir 只会让那些不太了解这两种语言(并且不熟悉您的特定风格)的人感到困惑。永远不要这样做。 请重新打开问题,完全没有理由关闭(不再) 【参考方案1】:

今天没有一种机制可以让你在 Elixir 中内联 Erlang。如果你仔细想想,即使是简单的列表推导也会很快变得棘手,因为 Elixir 中的变量遵循与 Erlang 不同的大小写约定。所以你需要转换值,这可能会变得如此冗长以至于不值得。

特别是理解很难更“erlangy”,但也许您的其他一些投诉可以得到解决。不过,我们需要逐案讨论。

我同意 Elixir 中的某些机制比 Erlang 稍微冗长(函数定义是我个人的烦恼),反之亦然。但是很难把所有东西都放在同一个桶里,有些东西必须在某个时候给予。 :)

【讨论】:

我也和你一起讨论函数定义 :) 我本身不一定有“抱怨”——更多的是“小毛病”。我确实喜欢这样一个事实,即当我进一步研究该语言时,我发现有些东西看起来就像它们在元编程和我们得到的其他好东西中所做的那样,而不仅仅是它“看起来像 ruby​​”(并不是说有什么问题与红宝石)。这与我会做出的设计选择相同。无论如何,是的,在某些时候必须给予一些东西。我的意见只是在您正在处理的设计目标中使事情尽可能地简洁。除此之外,恭喜。 不应该是“列表推导”而不是“类似推导”吗?

以上是关于混合 Elixir 和 Erlang?的主要内容,如果未能解决你的问题,请参考以下文章

Erlang 和 Elixir 上的包管理

Erlang - Elixir:啥是监督树?

使用 Erlang 的 Elixir 模块失败

Elixir Enum vs Erlang列表

如何在服务器上正确安装 Erlang、Elixir 和 mix?

Elixir/Erlang