gpt4 book ai didi

haskell - 在 Haskell 中创建唯一标签

转载 作者:行者123 更新时间:2023-12-04 14:18:31 24 4
gpt4 key购买 nike

我正在为 Haskell 中的简单命令式语言编写编译器,输出 Java 字节码。我已经到了发出字节码的抽象表示的地步。

在编写编译 if 语句的代码时,我遇到了一些麻烦。要实现 if 语句,我需要跳转到的标签。因此,我需要为该标签生成一个名称,并且该名称必须是唯一的。

我的第一个想法是通过 compileStatement 线程化一些状态。 , IE

compileStatement :: Statement -> UniqueIDState -> [AbstractInstruction]

当然, compilerStatement是递归的,因此使用此方法需要我从递归调用中传递唯一 ID 生成器的状态备份:
compileStatement :: Statement -> UniqueIDState -> (UniqueIdState, [AbstractInstruction])

这似乎有点笨拙,尤其是当我意识到我将来需要携带更多状态时;有没有更优雅的方式?

最佳答案

你需要一个“独特的供应”。在 Haskell 中执行此操作的常用方法是通过 State monad 线程化一个计数器,它可以自动化您描述的管道问题。

关于haskell - 在 Haskell 中创建唯一标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6311512/

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