gpt4 book ai didi

configuration - 在 Erlang 中实现图灵机

转载 作者:行者123 更新时间:2023-12-04 02:39:41 25 4
gpt4 key购买 nike

我有一个与实现图灵机非常相似的小项目。我遇到的基本问题是保存当前配置,例如头部的位置和更多信息。对我来说特别重要的是保留头部位置以向前或向后移动他。解决这个问题的 Erlang 方法是什么?

我是 Erlang 的新手,但就我对 OTP 的探索而言,gen_event 行为适用于此。我的想法是传递初始头部位置,然后通过处理程序更改它。但我想还有更优雅的解决方案。

最佳答案

在 Erlang 中,与在其他函数式语言中一样,您必须自己明确地管理您的状态。这意味着您必须随身携带它并将其贯穿于您的代码中。它比听起来容易得多,并很快成为第二天性。

我个人会使用 gen_server 行为而不是 gen_event。它更具体,将为您的机器提供更好的支持。 gen_event 比您需要的更通用。今生。

gen_server 行为,实际上是所有行为,都为管理状态提供支持。这些行为提供了顶层循环、接收和发送消息以及管理状态的基本功能。加上许多您会想要的额外好东西,即使您还不知道。

通过提供回调函数,您可以连接gen_server,所有行为,当某些事情发生时,行为会调用这些回调函数。您给出一个模块的名称,并且该行为期望该模块包含回调。通常有固定数量的回调,例如 gen_server 有 6 个,具有在特定时间调用的预定义名称。

例如,有一个 init/1 回调,它在服务器启动时被调用。它执行所有特定的初始化,然后返回 {ok,State}。这是您的服务器所需的状态。该行为对此进行管理,并通过回调对其进行线程处理,并期望有一个新的回调作为返回。

例如,当您执行 gen_server:call(Server, Message) 时,这将导致在服务器中调用 handle_call/3 回调以下参数和返回值:

handle_call(Message, From, State)  --> {reply,Reply,NewState}

Reply 被发送回调用者,NewState 是更新后的状态,然后传递到下一个回调。

您可以在 OTP Design Principles 中阅读更多相关信息例如 Gen_Server Behaviourgen_server module文档部分。

在你的情况下,你会让图灵机的行为管理磁带、位置等,你会向它发送命令。 IMAO agin.

关于configuration - 在 Erlang 中实现图灵机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20166038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com