2016-06-24 6 views
2

Scheme(guile特に)でモジュールをインポートするには?モジュール(guile特に)をインポートするスキームの構文は何ですか?

モジュールを作成し、スキーム内の別のスクリプトにインポートするにはどうすればいいですか?モジュールをインポートするときにスクリプトをどのようにコンパイルすればよいですか?渡されるコマンドライン引数は何ですか?モジュールが別のディレクトリにある場合、そのモジュールをインポートする方法は?

+1

https://www.gnu.org/software/guile/manual/html_node/Modules.html#Modules –

+0

私はモジュールtest_module.scm(http://paste.lisp.org/display/を作成319117)とスクリプトuse_module.scm(http://paste.lisp.org/display/319118)。モジュールとスクリプトは同じディレクトリにあります。私はこのコマンド "guile use_module.scm"でスクリプトを実行しようとしました。私はこのエラーをhttp://paste.lisp.org/display/319119、私はすべてのスクリプトは、モジュールにアクセスすることはできません理解できる。助けてください。 –

+0

私はIRCの人たちの助けを借りて、その仕組みを学びました。 –

答えて

1

我々は構文を使用してモジュールを作成しているここで、次のコードを持つモジュールtest_module.scmを作成し、その場所が/いくつかの/ディレクトリされ、

(define-module (test_module) 
    #: export (square 
       cube)) 

(define (square a) 
    (* a a)) 
(define (cube a) 
    (* a a a)) 

ます:

(define-module (name-of-the-module) 
    #: export (function1-to-be-exported 
       function2-to-be-exported)) 
;; rest of the code goes here for example: function1-to-be-exported 

ここで作成したモジュールを、現在のディレクトリにあるこのコードを含むuse_module.scmという名前でインポートするスクリプトを作成できます。ここで

(use-modules (test_module)) 
(format #t "~a\n" (square 12)) 

我々は、構文を使用して、モジュールを使用しています

(use-modules (name-of-the-module)) 
;; now all the functions that were exported from the 
;; module will be available here for our use 

は今することができますコンパイル部分に来て、私たちは場所/いくつかの/ディレクトリにGUILE_LOAD_PATHを設定し、スクリプトをコンパイルする必要があり。モジュールは/いくつかの/ディレクトリに存在する場合

$ GUILE_LOAD_PATH=. guile use_module.scm 

が、一般的には、次の操作を行います。

は今これを行う、その後、test_module.scmとuse_module.scmの両方が同じディレクトリにあることを前提としています:

$ GUILE_LOAD_PATH=/some/dir guile code.scm 

psこれを行うより簡単な方法は、add-to-load-pathを使用して、モジュールの位置をguileに伝えるスクリプトを書くことです。環境変数を気にせずにコンパイルできるようになりました。

(add-to-load-path "/some/dir") 
(use-modules (name-of-the-module)) 
;; rest of the code 
関連する問題