Scheme 获取未绑定的标识符';要求';计划中

Scheme 获取未绑定的标识符';要求';计划中,scheme,racket,sicp,Scheme,Racket,Sicp,我正在为我的项目使用Drracket。我正在为我的项目使用SICP(#lang SICP)语言。对于我的一个实现,我需要使用名为(require(planet dyoo/simply scheme))的scheme包。方案未识别require关键字。但如果我将语言改为#lang racket,则“require”将被识别为关键字。我的项目使用set car和设置cdr以sicp语言提供,不以racket提供。附近有工作吗 下面是我代码的一些摘录: #lang sicp (require (pla

我正在为我的项目使用Drracket。我正在为我的项目使用SICP(#lang SICP)语言。对于我的一个实现,我需要使用名为
(require(planet dyoo/simply scheme))
的scheme包。方案未识别require关键字。但如果我将语言改为#lang racket,则“require”将被识别为关键字。我的项目使用
set car
设置cdr以sicp语言提供,不以racket提供。附近有工作吗

下面是我代码的一些摘录:

#lang sicp
(require (planet dyoo/simply-scheme))
(define crosscuts 0)


首先,我想指出以下几点:

  • 通常最好使用
    #lang racket
    ,因为
    #lang sicp
    非常有限。您仍然可以访问
    set car(尽管名称为
    设置mcar!
    )。请参阅上的文档
  • 如果您决定使用
    #lang racket
    ,您真的需要使用可变数据结构吗?避免变异是函数式编程的一个重要特征。如果你真的需要可变数据结构,你能用
    struct
    #:可变的
    来代替吗?这更像是闹剧。请参阅上的文档
  • 这可能是不可能的,但通常我会避免使用Planet软件包。Planet是一个不再推荐的旧包装系统。然而,新的软件包系统中似乎没有
    简单的scheme
    ,因此您可能真的需要在这里使用Planet
  • 如果您确实想使用
    #lang sicp
    ,请注意

    R5RS没有
    require
    ,以避免中断使用
    require
    名称的程序<因此,使用code>#%require

    然而,
    #%require
    是一个更原始的操作。根据您的require规范,从
    require
    切换到
    #%require
    可能很容易,也可能不容易

    因此,首先,尝试用
    #%require
    替换
    require
    ,看看它是否有效。如果是,太好了,你就完了

    但如果出现错误,则表示您的require规范无法由
    #%require
    处理。一个可能的解决方案是使用
    #%require
    从Racket获取
    require
    ,这样您就可以使用
    require
    做更复杂的事情

    (#%require (only racket require))
    (require ....)
    

    首先,我想指出以下几点:

  • 通常最好使用
    #lang racket
    ,因为
    #lang sicp
    非常有限。您仍然可以访问
    set car(尽管名称为
    设置mcar!
    )。请参阅上的文档
  • 如果您决定使用
    #lang racket
    ,您真的需要使用可变数据结构吗?避免变异是函数式编程的一个重要特征。如果你真的需要可变数据结构,你能用
    struct
    #:可变的
    来代替吗?这更像是闹剧。请参阅上的文档
  • 这可能是不可能的,但通常我会避免使用Planet软件包。Planet是一个不再推荐的旧包装系统。然而,新的软件包系统中似乎没有
    简单的scheme
    ,因此您可能真的需要在这里使用Planet
  • 如果您确实想使用
    #lang sicp
    ,请注意

    R5RS没有
    require
    ,以避免中断使用
    require
    名称的程序<因此,使用code>#%require

    然而,
    #%require
    是一个更原始的操作。根据您的require规范,从
    require
    切换到
    #%require
    可能很容易,也可能不容易

    因此,首先,尝试用
    #%require
    替换
    require
    ,看看它是否有效。如果是,太好了,你就完了

    但如果出现错误,则表示您的require规范无法由
    #%require
    处理。一个可能的解决方案是使用
    #%require
    从Racket获取
    require
    ,这样您就可以使用
    require
    做更复杂的事情

    (#%require (only racket require))
    (require ....)