Одна из самых распространенных ошибок, которые я допускаю при реализации программного синтезатора с Розетка , использует неснятые конструкции Racket небезопасным способом, который заставляет синтезатор выводить (unsat)
.
На самом деле, как начинающему программисту Rosette, трудно просто определить неснятые конструкции Racket, которые могут вызывать проблемы.Я думал, что DrRacket может помочь, например, не показывать стрелки от линии #lang rosette
на неснятые конструкции Racket, такие как assv
, но это не так, то естьон отображал стрелки как для неподнятых (например, assv
), так и для поднятых операторов (например, first
).
Я использовал две стратегии: (i) построение кода синтеза в rosette/safe
насколько я могу переключиться на полный язык, что неудобно, так как я не могу использовать более новые и изящные конструкции Racker и (ii) просмотреть конструкции, которые я использую в своем коде, и проверить, «предоставлены» ли они rosette/base/base.rkt
, что утомительно.
Есть предложения от опытных программистов Rosette?