【问题标题】:Difference between Ubuntu scheme and XWin SchemeUbuntu 方案和 XWin 方案的区别
【发布时间】:2013-07-23 18:22:01
【问题描述】:

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

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

这工作正常,但我已切换到 Ubuntu,并且正在使用 MIT 方案。它一直运行良好,但我最近遇到了问题。

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

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

我将输入视为一手牌 '(ad 8s 5h) [for ace diamond, 8 spades, 5 heart]。

要访问 'a 值,UCB 讲座和 windows 版本都可以:

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

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

作为参数传递给安全车的对象广告不是一对。

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

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

但它不会使用 first 作为单个单词首字母的选择器。

谁能给我一个建议?我想继续在 Ubuntu 上学习这门课程,因为它让我的生活在保存和打开文件方面变得更加轻松。

谢谢,

AJ

【问题讨论】:

  • 请记住,您在软件中心中不仅有一个可用的方案实现,而且还有十几个。除了MIT Scheme (R5RS),您还有:DrRacketIkarusGambitChickenScmScheme48SigschemeSisc(使用 JRE)、@98 @、ScshGaucheElkScheme9StalinScheme2cOaklisp。列表中的前两个支持最新标准。

标签: ubuntu constructor cygwin scheme selector


【解决方案1】:

使用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

【讨论】:

  • 非常感谢!奥斯卡洛佩兹!
  • 我发现了我的问题:在 Windows 上,我使用的是 STk 版本的 Scheme,它与 MIT Scheme 不同。当我在 EMACS 中(MX 运行方案)时,我必须安装 STk 并配置我的 .emacs 以运行 stk-stimply 而不是 mit-scheme!
猜你喜欢
  • 1970-01-01
  • 2012-05-25
  • 2016-01-11
  • 2019-04-19
  • 2010-10-30
  • 1970-01-01
  • 2021-07-05
  • 2011-03-06
  • 2011-11-01
相关资源
最近更新 更多