2017-10-21 8 views
2

ブラウザでClojurescriptプログラムを実行しています。ClojureScript Eval。呼び出しコードに含まれるライブラリの使い方

これは、いくつかのライブラリをインポートし、ユーザーがそれらのライブラリを呼び出すいくつかの小さな字句コード "glue-code"を入力できるようにします。

4つの引数を指定してevalを呼び出すことができます(最初はアトムである環境の状態です)。しかし、実際に私が現在必要としているすべての機能を、他の場所からevalへの適切な引数に変えることはできますか?

更新:

私は多分、私が使用してevalのためのnamesspaceを設定することができると考えた:第三のNSオプションは、引数マップを付き合えません。私はそれを私のアプリケーションの名前空間に設定しました:

:ns "fig-pat.core" 

違いはありません。コンソールを見ると

、それは間違いなく、評価を行うためにしようとしている場合だが、EVAL-EDのコードで参照名が認識されないことを訴えています。たとえば

WARNING: Use of undeclared Var /square 

。 (四角は私が必要なんだ関数であることは、アプリケーション自体すなわち、図-pat.core名前空間に見えるのです。。)

は、私は、取得する:私はこの失敗を想定してい

SyntaxError: expected expression, got '.'[Learn More] 

全体として評価された式。

アップデート2:ちょうどnilを印刷しているHow can I get the Clojurescript namespace I am in from within a clojurescript program?

(println *ns*) 

:私はこの問題を推測している

は実際に関連している可能性があります。 Clojurescriptは独自の名前空間を見ることができません。

したがって:ns in evalは機能しませんか?

答えて

2

クロージャススクリプトプログラムの中でevalを呼び出すことは、「自己ホストクローゼススクリプト」の一部です。 自己ホストクローゼルススクリプトでは、解決ポリシーを実装しない限り、名前空間は使用できません。これは、ブラウザに名前空間の解決方法を知らせる必要があることを意味します。 cdnからcljsファイルをロードします。

名前空間の解決を実装するのはそれほど簡単ではありません。 これは、load-fnのdocstringの暗黙の方法で、cljs.js namespaceから説明されています。例えばKlipsecrepl

ブラウザで実行されている自己ホストcljsに解決

いくつかのツールのサポート名前空間

関連する問題