Tag: erlang

在Erlang,我什么时候使用; 或者,或者?

我一直在试图学习Erlang,并且在函数和case语句结束行时遇到了一些问题。 也就是说,我什么时候在我的函数或case语句中使用分号,逗号或句点? 我已经得到了东西的工作,但我不明白为什么,并正在寻找更多的信息。

RabbitMQ有Nodedown错误

在Windows 7企业机器上,我重新安装了Erlang 17.4和RabbitMQ 3.4.3 x64。 安装成功,顺利。 我还没有尝试创build我的第一个队列或交换,但我已经看到麻烦。 这个问题类似于另一个SOpost ,但是其他post似乎涉及到群集,这是我没有的。 而且,另一张海报可以通过重新启动RabbitMQ服务来避开他的问题; 这种方法不适合我。 我的“nodedown”问题在RabbitMQ命令提示符下显而易见: C:\ Program Files(x86)\ RabbitMQ Server \ rabbitmq_server-3.4.3 \ sbin> rabbitmqctl status状态节点rabbit @ TPAJ05421843 … 错误:无法连接到节点rabbit @ TPAJ05421843:nodedown 诊断 试图联系:[兔子@ TPAJ05421843] 兔@ TPAJ05421843: *连接到TPAJ05421843上的epmd(端口4369) * epmd报告:节点“兔子”根本没有运行 TPAJ05421843上的其他节点:['RabbitMQ'] *build议:启动节点 当前节点详情: – 节点名称:'rabbitmqctl-19884 @ TPAJ05421843' – 主目录:H:\ – cookie哈希值:PD4QQCYrf0TME9vIko3Xuw == 基于上述,我select了检查显式名为“RabbitMQ”的节点的状态。 我得到这个: C:\ Program Files(x86)\ RabbitMQ […]

有没有一个好的,完整的教程可用的Erlang分析转换?

Erlang中有大量的片段详细描述了parsing变换过程的各个部分,但没有一个我发现提供了从动机到执行的完整覆盖。 有没有一个很好的教程,我错过了什么地方,如果是的话,哪里可以find?

在游戏开发中使用函数式编程的好资源?

我对这个函数式编程范例还很陌生,但到目前为止,我还是喜欢它。 由于我正在进行游戏开发,所以我想用纯function的编程风格来编写一些游戏。 我不介意这种语言 – 无论是Erlang,Haskell,Lisp,还是Ruby(我发现它支持函数式编程特性)。 那么很显然,要学习函数式编程(实际上是什么),最好的build议就是学习函数式语言并编写大量程序。 但是我正在寻找的是在游戏和游戏引擎(2D或3D)中使用函数式编程的一些资源。 那么,你是否知道任何函数式编程文章/书籍/博客/关于在实际游戏中使用它,或者使用函数式编程语言devise简单的游戏引擎,以及游戏和游戏引擎在这个function环境中的所有互动? 请不要像“刚开始编写简单的东西在function上开始,然后逐渐地find你”。 正如我刚才所说,这是显而易见的,但我在这里问的是一些关于这个话题的资源,如果有的话。 谢谢!

如果有的话,Erlang进程如何映射到内核线程?

Erlang以能够支持许多轻量级进程而闻名; 它可以这样做,因为它们不是传统意义上的进程,甚至不像P线程中的线程,而是完全在用户空间中线程化。 这是好的(实际上很棒)。 但是,在多核/多处理器环境中,Erlang线程如何并行执行呢? 当然,他们必须以某种方式映射到内核线程才能在不同的内核上执行? 假设情况如此,这是如何完成的? 很多轻量级进程是否映射到单个内核线程? 还是有另一种解决这个问题的方法?

如何在Erlang中连接两个二进制文件?

如何在Erlang中连接两个二进制文件? 例如,假设我有: B1 = <<1,2>>. B2 = <<3,4>>. 如何连接B1和B2来创build一个“1,2,3,4”的二进制B3? 我问这个的原因是因为我正在编写代码来编码一些networking协议的数据包。 我通过编写数据包中的字段编码器来实现这一点,我需要连接这些字段来构build整个数据包。 也许我这样做是错误的。 我应该build立一个整数列表的数据包,并在最后时刻将列表转换为二进制文件?

我可以使用哪些库来与Erlang构buildGUI?

我可以使用哪些库为Erlang应用程序构buildGUI? 请每个答案一个选项。

混合Erlang和Haskell

如果你已经购买了函数式编程范例,那么你很可能喜欢Erlang和Haskell。 两者都具有纯粹的function核心和其他优点,如轻量级线程,使其非常适合多核世界。 但是也有一些差异。 Erlang是经过商业validation的具有成熟分布模型的容错语言。 它具有看似独特的function,能够通过热代码加载在运行时升级其版本。 (太棒了!) 另一方面,Haskell拥有任何主stream语言中最复杂的types系统。 (我把'主stream'定义为任何具有已发表的O'Reilly书籍的语言,所以哈斯克尔就是这样评价的)。它的直线单线程性能看起来比Erlang更好,轻量级线程看起来更轻。 我正试图为我剩下的编码生活组build一个开发平台,并想知道是否可以将Erlang和Haskell混合起来,以实现最佳的平台。 这个问题有两个部分: 我想使用Erlang作为一种容错MPI来将GHC运行时实例粘合在一起。 每个GHC运行时将会有一个Erlang进程。 如果“不可能发生”和GHC运行时间死了,那么Erlang进程会以某种方式检测到并死掉。 Erlang的热门代码加载和分发function将继续工作。 可以将GHC运行时configuration为仅使用一个核心,或者本地机器上的所有核心,或两者之间的任何组合。 一旦编写了Erlang库,其余的Erlang级别代码应该是纯粹的样板,并在每个应用程序的基础上自动生成。 (也许通过一个Haskell DSL例如。)如何实现至less一些这些东西? 我希望Erlang和Haskell能够共享相同的garabage收集器。 (这是比1更进一步的想法。)运行在JVM和CLR上的语言通过共享运行时间实现更大的质量。 我明白,在JVM或CLR上运行Erlang(热代码加载)和Haskell(更高版本的多态)有技术限制。 但是,解开垃圾收集器呢? (对函数式语言的运行时间的开始进行sorting)分配显然还是要非常快,所以也许这一点需要静态链接。而且应该有一些机制来区分可变堆和不可变堆(包含懒惰的一次写入内存),因为GHC需要这个。 修改HIPE和GHC是否可行,以便垃圾收集者可以共享堆? 请回答任何经验(积极或消极),想法或build议。 事实上,任何反馈(短直滥用!)是受欢迎的。 更新 感谢所有4个回复date – 每个教我至less有一个有用的东西,我不知道。 关于编码生活的其余部分 – 我把它包含在脸颊中引起争论,但实际上是这样。 我有一个项目,我打算继续努力,直到我死,它需要一个稳定的平台。 在上面提出的平台中,我只会编写Haskell,因为Erlang将自动生成。 那么Haskell会持续多久呢? Lisp依然和我们在一起,看起来好像很快就会消失。 Haskell是BSD3开放源代码,已经达到临界质量。 如果编程本身仍然是50年左右的时间,那么我认为Haskell或者Haskell的一些持续发展仍然会在这里。 更新2 回应rvirding的post 同意 – 实现一个完整的“Erskell / Haslang”通用虚拟机可能不是绝对不可能的,但是确实会非常困难。 虽然垃圾收集器级别只是像虚拟机一样共享,虽然仍然困难 ,但对我来说听起来要难一些。 在垃圾收集模型中,函数式语言必须有很多共同之处 – 不可变数据(包括thunk)的非普遍性和对非常快的分配的要求。 因此,通用性与单一虚拟机紧密捆绑的事实似乎有些奇怪。 VM有助于实现临界质量。 只要看看F#和Scala等“精简”function语言是如何起飞的。 Scala可能不具有Erlang的绝对容错能力,但是它为与JVM绑定的很多人提供了一条逃生路线。 […]

将整数转换为Erlang中的string

我知道,应该避免Erlangstring不惜一切代价… 但是如果我不这样做,我怎样才能从5中产生“5”? 特别是,有没有像io:format(“〜p”,[5])会返回一个格式化的string,而不是打印到一个stream?

Erlang的让它崩溃的哲学 – 适用于其他地方?

Erlang(或者Joe Armstrong的?)build议不要使用防御性编程 ,而是让进程崩溃(而不是用不必要的守卫来跟踪残骸,污染你的代码)对我来说非常有意义,现在我想知道为什么我浪费了这么多努力处理多年的error handling! 我想知道的是 – 这种方法只适用于像Erlang这样的平台吗? Erlang拥有一个虚拟机,对进程监督树进行简单的本机支持,重启进程非常快。 我应该把我的开发工作(不在Erlang世界)花在重build监督树上,而不是用顶层exception处理程序,错误代码,空结果等等让自己陷入困境。 你认为这种方法的改变在.NET或者Java的空间(比如说)中可以运行吗?