据我所知,这在Scheme中是不可能的.并且,出于所有意图和目的,它并非绝对必要.只需像常规变量一样定义顶层的值,然后不要更改它.为了帮助你记住,你可以采用一种约定来命名这些类型的常量 - 我已经看过书中的顶层变量是用*stars*它们的名字来定义的.
在其他语言中,某些库可能会覆盖您创建的定义.然而,Scheme的词汇范围加上PLT的模块系统确保了这种情况永远不会发生.
在PLT Scheme中,您可以在自己的模块中编写定义 - 如果您自己的代码不使用`set!',那么绑定永远不会改变.实际上,编译器使用它来执行各种优化,因此这不仅仅是一种约定.