You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在DrRacket中运行Rosette语言提示destruct未绑定错误如何解决

报错原因

destruct: unbound identifier in: destruct 报错的核心原因是destruct不属于Rosette语言的默认导出语法,默认环境中没有加载该标识符对应的定义。

解决方案

你可以任选以下任意一种方式修复该问题:

  • 方案1:显式导入destruct对应的依赖库
    在代码开头#lang rosette行的下方新增导入语句:
(require rosette/lib/match)

修改后的完整可运行代码如下:

#lang rosette
(require rosette/lib/match)

(struct plus (left right) #:transparent)
(struct mul (left right) #:transparent)
(struct square (arg) #:transparent)

(define prog (plus (square 7) 3))

(define (interpret p)
  (destruct p
    [(plus a b)  (+ (interpret a) (interpret b))]
    [(mul a b)   (* (interpret a) (interpret b))]
    [(square a)  (expt (interpret a) 2)]
    [_ p]))

(interpret prog)

运行后会返回预期结果52。

  • 方案2:替换为Racket原生匹配语法
    destruct的模式匹配语法和Racket标准库自带的match完全兼容,你可以直接把代码中的destruct关键字替换为match,不需要额外导入任何依赖。修改后的interpret函数定义如下:
(define (interpret p)
  (match p
    [(plus a b)  (+ (interpret a) (interpret b))]
    [(mul a b)   (* (interpret a) (interpret b))]
    [(square a)  (expt (interpret a) 2)]
    [_ p]))

内容的提问来源于stack exchange,提问作者MathStudent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:06:03