Ubuntu方案和XWin方案的区别

Ubuntu方案和XWin方案的区别,ubuntu,constructor,cygwin,scheme,selector,Ubuntu,Constructor,Cygwin,Scheme,Selector,我正在使用MITScheme从UCB学习61a 在前几章中,我一直在使用windows,首先下载cygwin,然后运行XWin类型的emacs&我得到了emacs编辑器和REPL 这很好,但我已经切换到Ubuntu,我正在使用麻省理工学院的方案。它一直运行良好,但我最近遇到了一个问题 [我在Ubuntu上使用MIT/GNU计划9.1版,在Windows上使用STk Interperter 4.0.1版] 我想写一个黑杰克程序 我将输入作为一手牌的ad 8s 5h[对于王牌钻石,8黑桃,5颗红心]

我正在使用MITScheme从UCB学习61a

在前几章中,我一直在使用windows,首先下载cygwin,然后运行XWin类型的emacs&我得到了emacs编辑器和REPL

这很好,但我已经切换到Ubuntu,我正在使用麻省理工学院的方案。它一直运行良好,但我最近遇到了一个问题

[我在Ubuntu上使用MIT/GNU计划9.1版,在Windows上使用STk Interperter 4.0.1版]

我想写一个黑杰克程序

我将输入作为一手牌的ad 8s 5h[对于王牌钻石,8黑桃,5颗红心]

要访问“a”值,UCB教程和windows版本可以使用:

先到先得'ad 8s 5h==>a

当我在Ubuntu MIT Scheme上尝试此方法时,我得到错误:

作为参数传递给safe car的对象ad不是一对

经过一些测试后,我看到这里的MIT scheme将使用first提取列表的第一项:

第一个'ad 8s 5h===>ad

但它不会将first用作单个单词第一个字母的选择器

谁能给我一个建议吗?我想继续在Ubuntu上学习这门课程,因为它让我的生活更容易保存和打开文件

谢谢

AJ使用first访问符号中的第一个字符不能跨方案实现移植。在大多数情况下,口译员第一次或第二次口译只能成对进行。要访问符号中的第一个字符,请创建帮助程序:

(define (first-symbol sym)
  (string->symbol               ; 4. convert the string to a symbol
   (string                      ; 3. create a one-character string
    (string-ref                 ; 2. get the first character in the string
     (symbol->string sym) 0)))) ; 1. convert the symbol to a string
上述函数仅使用标准过程,在任何RxRS解释器中都可以正常工作。像这样使用它:

(first-symbol (first '(ad 8s 5h)))
=> 'a

非常感谢你!奥斯卡·洛佩兹!我发现了我的问题:在windows上,我使用的是STk版本的Scheme,它不同于MIT的Scheme。当我在emacs中运行scheme时,我必须安装STk并配置我的.emacs来运行STk stimply而不是mit scheme!请记住,在软件中心,您不仅有一个可用的方案实现,还有十几个。除了麻省理工学院的方案R5R,你还有:DrRacket、Ikarus、Gambit、Chicken、Scm、Scheme48、Sigscheme,Sisc使用JRE、Tinyscheme、Scsh、Gauche、Elk、Scheme9、斯大林、Scheme2c和Oaklisp。列表中的前两个支持最新标准。