代码之家  ›  专栏  ›  技术社区  ›  Simon Johnson Andomar

用线程模拟副作用

  •  3
  • Simon Johnson Andomar  · 技术社区  · 14 年前

    我在看 this

    他说,即使使用完全纯函数,一旦引入线程,也可以模拟副作用。

    他概述这一点的方式是使用C-omega表示法,我不熟悉,这已经有了相关的语言支持。

    我的问题是如何在没有赋值的情况下实现get和set消息处理程序?当然,处理程序必须更改一个值,这样线程的内部循环才能记录一个新值?

    我错过了什么?例如,在没有特殊构造的LISP中,我将如何实现它?

    1 回复  |  直到 14 年前
        1
  •  6
  •   Robert Harvey Isaac Blanco    14 年前

    我的问题是如何在没有赋值的情况下实现get和set消息处理程序?当然,处理程序必须更改一个值,这样线程的内部循环才能记录一个新值?

    是的,你是对的。Erik假设每个线程都有自己的消息队列。用发送消息 Value(n) 明显更改消息队列的状态。他让这听起来更神秘:他只是在用任务交换另一种形式的可变状态。他利用了语言的“前提条件”特性,使之在句法上更加清晰。

    正如他所说的,您可以使用常规IO(他提到控制台IO)来做同样的事情。想象 数值(n) 写入 n 文件和前提条件 Value(T t) t