Ubuntu方案与XWin方案的区别

时间:2013-07-23 18:22:01

标签: ubuntu constructor cygwin scheme selector

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

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

这个工作正常,但我已经切换到Ubuntu,我正在使用MIT Scheme。它一直运作良好,但我最近遇到了一个问题。

[我正在使用Ubuntu上的MIT / GNU Scheme 9.1和Windows上的STk Interperter 4.0.1版本]

我正在尝试编写黑杰克程序。

我把输入作为一手牌(广告8s 5h)[用于ace钻石,8个黑桃,5个心脏]。

要访问'a值,UCB讲座和Windows版本可以正常使用:

(first(first'(ad 8s 5h)))===>一个

当我在Ubuntu MIT Scheme上尝试这个时,我收到错误:

作为参数传递给safe-car的对象广告不是一对。

经过一些测试后,我发现这里的MIT方案将首先用于提取列表的第一项:

(首先'(ad 8s 5h))=====>广告

但它不会首先用作单个词的第一个字母的选择器。

有人可以给我一个建议吗?我想继续在Ubuntu上学习这门课程,因为它在保存和打开文件方面让我的生活变得更加容易。

谢谢,

AJ

1 个答案:

答案 0 :(得分:0)

使用first访问符号中的第一个字符不能跨Scheme实现移植。在大多数口译员中,firstcar只会 才能成对使用。要访问符号中的第一个字符,请创建一个帮助程序:

(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