2

私は、Ableson/Sussman レクチャーと Berkeley 61A レクチャーの両方を使用して、SICP を進めています。バークレー校の宿題をしたいのですが、文の定義が必要ですが、butfirst、butlast などがあります。Dr.Scheme には単純なスキーム言語が組み込まれていたようですが、最新のバージョン 4.1.5 にはそれがありません。Planet PLTから 、定義ウィンドウに (require (planet "simply-scheme.ss" ("dyoo" "simply-scheme" 1 0))) を簡単に追加できると思いました。私は得る

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

ここから Simply.scm ファイルを取得 して Dr Scheme 定義ウィンドウに貼り付けようとしましたが、うまくいきません:

上級生モードでは、「.」の不正使用が読み取られます。

次のコードの行 (lambda (string . 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))))))

In R5RS I get set!: cannot mutate module-required identifier in: number->string (次のコードの 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)
4

2 に答える 2

4

上級生は、そのために設計された例に従わない限り、実際に機能することはありません. ほとんどの書籍や例では、 R 5 RSなどを想定しています。R 5 RS と PLTrequire構文の両方が含まれているので、Pretty Big 言語を使用することをお勧めします。

PLaneT の Simply Scheme パッケージを使用するには、新しい require 構文を使用する必要があります (これはパッケージ リスト ページで見つけることができます。パッケージのドキュメントは更新されていないようです)。

(require (planet dyoo/simply-scheme:1:2/simply-scheme))
于 2009-04-11T05:47:14.780 に答える
2

フォローアップ; Racket の Simply Scheme サポート ライブラリは http://planet.plt-scheme.org/display.ss?package=simply-scheme.plt&owner=dyoo にあります。 plt-scheme.org/package-source/dyoo/simply-scheme.plt/2/1/planet-docs/manual/index.html .

于 2011-08-26T23:43:19.567 に答える