代码之家  ›  专栏  ›  技术社区  ›  Leonard

为Dr.Scheme寻找简单的方案习语

  •  2
  • Leonard  · 技术社区  · 15 年前

    我正在用艾伯森和苏斯曼的方法通过SICP。 讲座和伯克利61A讲座 速度。我想做一些伯克利的家庭作业,但需要 句子、butFirst、butLast等的定义。看起来有一段时间,Dr.Scheme内置了一种简单的方案语言,但是最新版本4.1.5没有。从 Planet PLT 我想我可以简单地添加(要求行星“simply scheme.ss”(“dyoo”)。 “我的定义”窗口中的“简单方案”10)。我得到

    require: PLaneT
    could not find the requested package: Server had no matching package:
    No package matched the specified criteria
    

    我试图从 here 并将其粘贴到“我的DR方案定义”窗口中,但不起作用:

    在高级学生模式下,我得到 阅读:非法使用“”。

    对于线条(lambda(字符串)。args)在以下代码中。

    (define whoops
      (let ((string? string?)
        (string-append string-append)
        (error error)
        (cons cons)
        (map map)
        (apply apply))
        (define (error-printform x)
          (if (string? x)
          (string-append "\"" x "\"")
          x))
        (lambda (string . args)
          (apply error (cons string (map error-printform args))))))
    

    在R5RS中我得到 集合!:无法在:number->字符串中改变模块所需的标识符 (以下代码的第7行)

    (if (char=? #\+ (string-ref (number->string 1.0) 0))
        (let ((old-ns number->string)
          (char=? char=?)
          (string-ref string-ref)
          (substring substring)
          (string-length string-length))
          (set! number->string
            (lambda args
              (let ((result (apply old-ns args)))
            (if (char=? #\+ (string-ref result 0))
                (substring result 1 (string-length result))
                result)))))
        'no-problem)
    
    2 回复  |  直到 13 年前
        1
  •  4
  •   Brian Campbell Dennis Williamson    15 年前

    高级学生永远不会真正为你工作,除非你遵循为它设计的例子。大多数书籍和例子都会假设 R 5 RS 或者类似的。我建议使用相当大的语言,因为这包括 RS和PLT require 语法和其他一些东西。

    为了使用Planet的Simple Scheme包,您需要使用新的Require语法(您可以在 package listing page ;看起来像 docs for the package 尚未更新):

    (require (planet dyoo/simply-scheme:1:2/simply-scheme))
    
        2
  •  2
  •   dyoo    13 年前