6

私は現在、Racket/Scheme に少し飛び込もうとしています。(X)REPL のインスタンスをエディターの横で実行しているため、言語を探索するのに非常に役立ちます。ただし、関数のソース コードを表示する XREPL コマンドまたはマクロ (または何でも) が見つからないようです。

必要なすべての部品がそこにあるようです:

XREPL のdescribeコマンドはファイルを認識します。

-> ,describe string-join
; `string-join' is a bound identifier,
;   defined in racket/string.rkt
;   required directly

そしてget-collects-search-dirsパスを知っています:

-> (require setup/dirs)
-> (get-collects-search-dirs)
'(#<path:/home/richard/.racket/5.2.1/collects>
  #<path:/usr/local/lib/racket/collects>)

そして、私たちが持っているものの反省側では:

-> (procedure-arity string-join)
2

しかし、関数の呼び出し方法だけを知りたい場合は、役に立ちません。関数の実装、または少なくともパラメーター名にアクセスする方法はありますか?

helpまたは、どちらも私にとってはうまくいきます -開くドキュメントに相当するある種のREPLプレーンテキストですか?

4

3 に答える 3

5

これが Racket に当てはまるかどうかはわかりませんが、MIT スキームには、あなたを近づける組み込みの手順がいくつかあります。(以下、proc単に任意の手順を表します)

  1. (procedure-arity proc)あなたが述べたように、引数の数が得られます
  2. (pa proc)引数リストを出力します
  3. (pp proc)プロシージャの本文を出力します

これは、多くの組み込みプロシージャと独自に定義したプロシージャで機能しますが、これらのいずれかをdefineorのような特別なフォームで呼び出そうとするset!と、エラーが発生します。

于 2012-04-22T14:37:57.907 に答える
4

数週間前、,describe関数の引数名とコントラクトを出力するように XREPL コマンドが拡張されました。ソース

これは、Racket ドキュメントの「青いボックス」です。Racket 6 CSS の再設計前は青色だったため、このように呼ばれています。今は実際には灰色です:)。

これは、HEAD から Racket をビルドすることで取得できます。それ以外の場合は、6.1 以降の次のリリースにあるはずです。

これは、インストールされたパッケージに Scribble ドキュメントがある機能に限定されているように見えることに注意してください。

于 2014-08-11T15:00:01.710 に答える