Racket中immutable?函数未定义问题求助(Beginning Student语言)
解决Beginning Student语言中
immutable?未定义的问题 问题原因
Beginning Student是DrRacket专为教学设计的精简语言子集,仅包含基础教学所需的函数,Racket核心库中的immutable?函数不在这个子集范围内,因此直接调用会提示未定义。
解决方案
方案1:切换到更完整的语言
在DrRacket左上角的语言选择下拉框中,将当前的「Beginning Student [custom]」切换为Racket或Intermediate Student with Lambda(中级学生带Lambda语言)。切换后无需额外操作,即可直接调用immutable?函数:
(immutable? "test") ; 切换语言后会返回#t
方案2:在Beginning Student中自行实现替代逻辑
Beginning Student环境中,所有字符串默认都是不可变的(不存在string-set!这类修改字符串的函数),因此可以直接写一个替代函数:
(define (immutable-string? s) #t)
调用(immutable-string? "test")会返回#t,完全满足在该环境下判断字符串不可变性的需求。
内容的提问来源于stack exchange,提问作者Agustín Blando
相关产品推荐
相关产品推荐

