混合使用Elixir和Erlang?

3

我希望在Elixir代码中使用一些Erlang结构,其中之一是Erlang列表推导。

我的一般问题是,在编写Elixir代码时是否有一些方式可以"降级"到编写Erlang代码(有点像你看到人们在Ruby或TCL等语言中嵌入C的方式)。 我的具体问题(与一般性问题相关)是,我是否能在编写Elixir代码时以某种方式获得类似Erlang风格的列表推导?

如果使用普通的Elixir不可能实现这一点,也许可以通过宏来完成(可能会比较困难)?我确实理解我可以编写一个Erlang模块并从Elixir中调用它,但那并不完全是我要寻找的。


1
使用Elixir编写Erlang代码只会让那些不熟悉这两种语言(并且不熟悉您特定的编程风格)的人感到困惑。千万不要这样做。 - vonbrand
请重新开放问题,没有任何理由再关闭它。 - mit
1个回答

8

现在没有一种机制可以在Elixir中内联Erlang。如果你考虑一下,即使是简单的列表推导也会变得相当棘手,因为Elixir中的一个变量遵循不同的大小写约定,而Erlang中则是另一种。所以你需要转换值,这可能会变得非常冗长,甚至不值得。

特别是Comprehensions可能很难更加“erlangy”,但也许你的其他抱怨可以得到解决。我们需要逐个案例地进行讨论。

我同意Elixir中有些机制比Erlang稍微冗长一些(函数定义是我个人的小小恼怒),反之亦然。但是很难将所有东西放在同一个桶中,某些方面必须妥协。


1
我也同意函数定义的方式 :) 我并不是有什么特别的“抱怨”,更多的是“小问题”。当我深入了解这门语言时,我发现一些东西看起来是为了元编程和其他好处而设计的,并不是为了“看起来像 Ruby”(虽然 Ruby 也没什么问题)。这是我会做出的相同设计选择。总之,在某个点上必须要有所取舍。我的建议是在符合设计目标的前提下尽可能地简洁。除此之外,恭喜你们。 - user1992634
那不应该是“列表推导式”而不是“类似推导式”吗? - Frank Schmitt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接