チキンの(use)
と(import)
の違いはちょっと曇っています。同様に、(load)
、(require)
、(require-extension)
の違いは?チキンスキームでvs RequireとNeed-extensionを使用する
これらのことはウェブサイトであまり言及されていないようです。
チキンの(use)
と(import)
の違いはちょっと曇っています。同様に、(load)
、(require)
、(require-extension)
の違いは?チキンスキームでvs RequireとNeed-extensionを使用する
これらのことはウェブサイトであまり言及されていないようです。
Load
およびrequire
は、純粋に実行時の手続きアクションです。 Load
は、文字列引数を受け取り、その名前(ソースコードまたはコンパイル済みコード)を実行中のSchemeにロードします。その結果、定義されているものが利用可能になります。 Require
も同じことを行いますが、同じ名前(通常はロードされたファイル)で提供が呼び出されたかどうかを確認して、ファイルがすでに読み込まれているかどうかを確認します。他の言語のプラグインに対応する、Schemeプログラミングでは比較的まれです。コンパイル時に未知のコードがロードされる必要があります。詳細はユニットeval
のマニュアルページを参照してください。
Import
は、ファイルではなくモジュールに関係しています。すでにロードされているはずの名前付きモジュールを探し、そのモジュールからエクスポートされた名前を現在のコンテキストで表示します。モジュールを正常にインポートするには、モジュールのインポートライブラリが必要です。これは構文なので、モジュール名は呼び出し時に明示的に指定する必要があり、実行時には計算できません。詳細については、モジュールのマニュアルページを参照してください。
Require-library
正しいコードを読み込むことができます。コードが実行中のSchemeの一部である場合、コードはChickenに組み込まれているため、何もしません。それ以外の場合は、コアライブラリユニットがある場合はロードし、最後の手段としてrequire
を呼び出します。コンパイル時には、実行時に環境が正しいことを確認するために類似のことが行われます。詳細については、マニュアルの「非標準マクロと特殊形式」のページを参照してください。
Use
は、require-library
と同じ名前のimport
となります。 Chickenプログラムに機能を追加する最も一般的な方法です。ただし、これらのモジュールの機能が既にロードされているため、(import scheme)
と(import chicken)
と記述します。 Require-extension
は、use
の正確な同義語であり、SRFI 55との互換性のために提供されています。 R7RSモードでは、import
もuse
の同義語です。
恐縮です、ありがとうございます。 –
これもCHICKEN 5で簡略化されます: 'use'、' require-extension'と 'import'は基本的に同じ動作をします。結局、これらのうちの1つまたは2つを取り除くことになります。 – sjamaan