首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Dr.racket中运行Rosette语言

无法在Dr.racket中运行Rosette语言
EN

Stack Overflow用户
提问于 2021-10-21 21:41:15
回答 1查看 32关注 0票数 0

我按照Rosette网站上的说明下载了rosette (https://docs.racket-lang.org/rosette-guide/ch_getting-started.html)。似乎我可以运行这个程序并得到一个没有错误的输出。

代码语言:javascript
复制
    #lang rosette/safe

; Compute the absolute value of `x`.
(define (absv x)
  (if (< x 0) (- x) x))

; Define a symbolic variable called y of type integer.
(define-symbolic y integer?)

; Solve a constraint saying |y| = 5.
(solve
  (assert (= (absv y) 5)))

然而,当我尝试运行这个或任何类似的程序时,使用的不仅仅是基本的球拍关键字,我得到了(对我来说)不清楚的错误。

代码语言:javascript
复制
#lang rosette

(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)

这会给我一个错误destruct: unbound identifier in: destruct。怎么一回事?这段代码不是我自己的,是从教程中复制粘贴过来的,所以我认为它应该可以工作。我还尝试了从Rosette网站粘贴的示例代码副本,并给出了类似的错误。我已经遵循了所有的安装说明,并更新了环境路径等。有什么帮助吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-21 23:22:41

默认情况下,#lang rosette不提供destruct。您需要通过编写以下代码来要求它:

代码语言:javascript
复制
 (require rosette/lib/destruct)

#lang rosette之后

顺便问一下,你在哪里找到这段代码的?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69669078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档