Racket 在使用完整花环语言时,识别未折叠球拍结构的方法有哪些?

Racket 在使用完整花环语言时,识别未折叠球拍结构的方法有哪些?,racket,rosette,Racket,Rosette,我在用实现程序合成器时最常见的错误之一是以不安全的方式使用,使合成器输出(unsat) 事实上,作为一个初学者Rosette程序员,很难精确定位可能导致问题的未折叠的Racket结构。我认为DrRacket可能会有所帮助,例如,它不显示从#lang rosette行到未fted Racket结构的箭头,例如,但事实并非如此,即它向未fted(例如,assv)和提升的操作员(例如,first)显示箭头 我一直在使用两种策略,(I)在rosette/safe中构建合成代码,然后切换到完整的语言,这很

我在用实现程序合成器时最常见的错误之一是以不安全的方式使用,使合成器输出
(unsat)

事实上,作为一个初学者Rosette程序员,很难精确定位可能导致问题的未折叠的Racket结构。我认为DrRacket可能会有所帮助,例如,它不显示从
#lang rosette
行到未fted Racket结构的箭头,例如,但事实并非如此,即它向未fted(例如,
assv
)和提升的操作员(例如,
first
)显示箭头

我一直在使用两种策略,(I)在
rosette/safe
中构建合成代码,然后切换到完整的语言,这很不方便,因为我不能使用更新和更高级的Racker结构,(ii)浏览我在代码中使用的结构并检查它们是否由“提供”,这很烦人


经验丰富的Rosette程序员有什么建议吗?

一种方法是在
Rosette/safe
中开始编程,然后根据需要明确地从Racket中获取所需的结构。然后,如果事情出了差错,那么就更容易找出他们在什么地方、什么时候出了差错

例如,您的代码如下所示:

   #lang rosette/safe

   (require (only-in racket for assv))

随着代码库的增长,您还可以将所有这些导入收集到一个单独的模块中进行导出。剩下的代码将需要该模块,该模块将作为您的自定义版本的
rosette/safe
加上您所需的最低数量的球拍结构。

在DrRacket中,如果某个功能是由Racket提供的,您可以右键单击它,通常其中一个菜单项将是“查看来自Racket/base的uu uu_u的文档”如果它来自Racket,或者“查看来自rosette/base/base的文档”,如果它来自rosette。然而,这并不适用于所有情况。