你如何在PLT计划中定义一个常量?

unj*_*nj2 4 scheme racket

如何声明符号始终代表特定值,并且在整个程序执行期间无法更改?

Kyl*_*nin 8

据我所知,这在Scheme中是不可能的.并且,出于所有意图和目的,它并非绝对必要.只需像常规变量一样定义顶层的值,然后不要更改它.为了帮助你记住,你可以采用一种约定来命名这些类型的常量 - 我已经看过书中的顶层变量是用*stars*它们的名字来定义的.

在其他语言中,某些库可能会覆盖您创建的定义.然而,Scheme的词汇范围加上PLT的模块系统确保了这种情况永远不会发生.

  • 在Common Lisp中,通常*stars*用于顶层变量,+ plus-signs +用于常量. (7认同)

Eli*_*lay 5

在PLT Scheme中,您可以在自己的模块中编写定义 - 如果您自己的代码不使用`set!',那么绑定永远不会改变.实际上,编译器使用它来执行各种优化,因此这不仅仅是一种约定.