|
|
1
5
在我的理解中,free monad的全部要点是,您不需要像async那样公开效果,所以我认为它们不应该在pipeinstruction类型中使用。解释器是添加效果的地方。 另外,free monad只在haskell中才有意义,在haskell中,您只需要定义一个函子,然后就可以自动获得实现的其余部分。在f中,您还必须编写其余代码,因此使用free比使用更传统的解释器模式没有多大好处。 你链接到的那个TurtleProgram代码只是一个实验——我不建议使用真正的免费代码。 最后,如果你已经知道你将要使用的效果,并且你不会有多个解释,那么使用这种方法是没有意义的。只有当利益大于复杂性时才有意义。 无论如何,如果你确实想写一个解释器版本(而不是免费的),我会这样做: 首先,定义说明 没有任何影响 是的。
然后可以为其编写计算表达式:
然后就可以开始编写计算表达式了。这将有助于在启动解释器之前清除设计。
一旦你描述了说明,你就可以给口译员写信了。如我所说,如果你不写多个口译员,那么也许你根本不需要这样做。 这是一个非异步版本的解释器(“id monad”,原样):
下面是异步版本:
|
|
|
2
6
首先,我认为在f_中使用自由单子非常接近于反模式。这是一个非常抽象的结构,不太适合习惯的f风格,但这是一个偏好问题,如果您(和您的团队)发现这种编写代码的方式可读且易于理解,那么您肯定可以朝这个方向发展。
出于好奇,我花了一些时间来研究你的例子——虽然我还没有完全弄清楚如何修复你的例子,但我希望下面的内容可以帮助你朝着正确的方向前进。我认为你需要整合
注意我必须加上
这让你明白了
|
|
|
Jess The Witch · GCP云功能中处理延迟任务的模式 1 年前 |
|
Plup · 连接失败时,PyMongo异步客户端未引发异常 1 年前 |
|
|
user1233894 · 尝试从全局函数传递值 1 年前 |
|
|
Fabiano Taioli · 管理单线程Rust中的阻塞函数 1 年前 |
|
|
river7816 · 为什么spdlog不在async函数中打印 1 年前 |