字符串前缀? \在模块中获取错误未绑定标识符

string-prefix? \getting error unbound identifier in module

我正在尝试使用字符串前缀?但在模块

中出现错误未绑定标识符

(字符串前缀?"Racket" "R")

使用 drracket

请帮忙

TL;DR: 在文件的第二行添加 (require racket/string),它可能会起作用。


通常,这会起作用:

#lang racket

(string-prefix? "Racket" "R")

然而,string-prefix? 有两种可能被解除绑定。

  1. 您使用的是非标准 Racket 语言,并且该语言不提供 string-prefix?。检查是否属于这种情况的一种简单方法是查看程序的第一行,看看是否有 #lang <lang-id>,其中 <lang-id> 不是 racket。例如:

    #lang racket/base
    
    (string-prefix? "Racket" "R")
    

    此处,string-prefix?未绑定,因为racket/base不提供string-prefix?

  2. 您正在使用一种特殊的语言。在这种情况下,您的程序的第一行不会有 #lang,但左下角会指示您正在使用的语言(例如 Beginning Student)。

在这两种情况下,如果语言提供了 require 结构,那么只需添加 (require racket/string) 就可以使 string-prefix? 可用。这是因为 string-prefix? 定义在 racket/string.

#lang racket/base

(require racket/string)

(string-prefix? "Racket" "R")