Scheme 如何使用DrRacket遵循简单方案手册

Scheme 如何使用DrRacket遵循简单方案手册,scheme,dr.racket,Scheme,Dr.racket,我希望能够操纵句子,这样我就可以将它们作为输入,并根据诸如单个字母之类的内容返回输出。例如,ends-e命令将返回以“e”结尾的所有单词: 不幸的是,“e”是一个字符串,(只有优秀的人才会年轻)是一个句子。Scheme无法将句子理解为数据类型(因为它不是数据类型)。如何将用户输入的带有引号和括号的句子转换成我可以操纵并以相同的句子格式返回的句子 这本书:概述了一些可以操作句子和单词的函数,但在底部贴了一个脚注说“就像本书中所有处理单词和句子的程序一样……本章中的程序是Scheme扩展的一部分。”

我希望能够操纵句子,这样我就可以将它们作为输入,并根据诸如单个字母之类的内容返回输出。例如,ends-e命令将返回以“e”结尾的所有单词:

不幸的是,“e”是一个字符串,(只有优秀的人才会年轻)是一个句子。Scheme无法将句子理解为数据类型(因为它不是数据类型)。如何将用户输入的带有引号和括号的句子转换成我可以操纵并以相同的句子格式返回的句子

这本书:概述了一些可以操作句子和单词的函数,但在底部贴了一个脚注说“就像本书中所有处理单词和句子的程序一样……本章中的程序是Scheme扩展的一部分。”

如何获得这些扩展?我在后面的一章中看到了,但是我对语言的理解太初级,无法理解如何自己创建这些过程

这些是当我试图将“(h)转换为scheme可以理解的数据类型时得到的错误消息

Welcome to DrRacket, version 6.12 [3m].
Language: sicp, with debugging; memory limit: 128 MB.

> (symbol->string '(h))
. . symbol->string: contract violation
  expected: symbol?
  given: (mcons 'h '())
> (list->string '(h))
. . list->string: contract violation
  expected: (listof char?)
  given: '(h)
> (string->list '(h))
. . string->list: contract violation
  expected: string?
  given: (mcons 'h '())
> (string->symbol '(h))
. . string->symbol: contract violation
  expected: string?
  given: (mcons 'h '())
> 
这意味着我不能问方案(h)是否等于“h”。我甚至不能问它(h)是否等于(h)

在DrRacket中有一个

1.从包管理器
  • 打开软件包管理器:在DrRacket中选择菜单“文件”,然后选择“软件包管理器…”

  • 在“按我的意思做”选项卡中,找到文本字段并输入:“simply scheme”,不带引号

  • 单击“安装”按钮。这将产生smoe输出。当您可以单击“关闭输出”时,它就完成了,您可以关闭窗口

  • 测试一下。确保DrRacket在中有“从源代码确定语言” 左下角。编写以下程序并单击“运行”:

  • #简单方案
    (se(butlast(bf“this”))
    “世界”)
    ; ==> (你好,“世界”)
    
    我有点困惑,因为和是两本不同的书。SICP在他们的书中有自己指定的程序,在DrRacket中有一种特定的语言,也适用于这种Scheme风格。我写了一封信

    Welcome to DrRacket, version 6.12 [3m].
    Language: sicp, with debugging; memory limit: 128 MB.
    
    > (symbol->string '(h))
    . . symbol->string: contract violation
      expected: symbol?
      given: (mcons 'h '())
    > (list->string '(h))
    . . list->string: contract violation
      expected: (listof char?)
      given: '(h)
    > (string->list '(h))
    . . string->list: contract violation
      expected: string?
      given: (mcons 'h '())
    > (string->symbol '(h))
    . . string->symbol: contract violation
      expected: string?
      given: (mcons 'h '())
    > 
    
    > (eq? '(h) "h")
    #f
    > (eq? '(h) '(h))
    #f
    >