問題タブ [reify]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1645 参照

constructor - Clojure reify でコンストラクターを提供する

Clojure で使用reifyする場合、コンストラクターに式を提供するにはどうすればよいですか?

または、基本クラスのコンストラクターに引数を渡すにはどうすればよいですか?

0 投票する
4 に答える
1295 参照

macros - clojure マクロを使用して、reify 呼び出し内でゲッターとセッターを自動的に作成する

多数の (~50) getter および setter メソッド (不規則な名前を持つもの) を持つ巨大な Java インターフェイスを実装しようとしています。マクロを使ってコード量を減らしたらいいなと思いました。だから代わりに

書けるようになりたい

この set-and-get マクロ (または同様のもの) は可能ですか? 私はそれを機能させることができませんでした。

0 投票する
1 に答える
146 参照

java - reifyで作成された1回限りのインスタンスはNPEを引き起こします

次のようなJavaAPIの周りにClojureレイヤーを書き込もうとしています。

私の目標は、ExecutorJobのメソッドのfn本体としてを実行できるClojureAPIを作成することです。executeこれは私が思いついたものです:

残念ながら、この呼び出しを考えると:

NPEが発生します。

2番目のパラメーターにいくつかの意味のあるJava呼び出しを入れようとしましたがexecute-as、これはデバッガーで問題なく実行されていることがわかります。

そのマクロの何が問題になっていますか?

0 投票する
1 に答える
200 参照

macros - マクロ内の具象化の一部としての動的letフォーム

わかりました。これをまっすぐにしてみましょう。私の最終的な目的は、次のようなマクロをAPIとしてユーザーに提供することです。

Script結果は、次のようなプロトコルのインスタンスである必要があります。

の最初の引数は、 :defscript内の対応するキーにバインドする必要があるシンボルのリストであるという考えです。model

modelマクロ展開時には単なるシンボルであるため、パラメーターを使用しようとすると常に壁にぶつかっているため、このような効果を効果的に生成できるコードを思い付くことができません。

invoke-直接呼び出された場合は正常に動作します。

ただし、正しく展開できないためdefscript、内部で使用すると機能しません。model

どうすればこのポイントを乗り越えて、ピースを接着できますか?

0 投票する
1 に答える
2437 参照

haskell - Haskellレコードのフィールド名を文字列のリストとして取得しますか?

私が次を持っているとしましょう:

テンプレートHaskellを理解しており、reify関数でレコードのフィールド名を取得できます。あれは:

テンプレートHaskellなしでこれを行うことができるという主張もあります。誰かがこれを達成できるための実装例を提供できますか?

0 投票する
2 に答える
149 参照

scala - reify のマクロ展開中の StackOverflowError

reify を使用する簡単なテスト マクロがあります。マクロ展開時に StackOverflowError が発生します。

なぜこれが起こるのですか?どうにか回避できないでしょうか?

編集: これは M6 で起こることです。M7で試してみたところ、次のように表示されます

実装制限: 型 Object{def (): O.type} (ClassInfoType) を具体化できません

これで理由の質問に答えましたが、これを回避する方法があるかどうかという質問はまだ残っています。

0 投票する
1 に答える
5876 参照

haskell - テンプレート Haskell を使用して関連付けられた型シノニムを取得する

Template Haskell は、型クラスで宣言された関連型シノニムの名前や宣言を見つけることができますか? reifyやりたいことができると思っていましたが、必要な情報がすべて提供されているようには見えません。関数型のシグネチャを取得するために機能します。

ただし、関連付けられた型シノニムをクラスに追加しても、出力は (名前の変更まで) 変更されません。

の名前が​​わかればF、それに関する情報を調べることができます。

Fしかし、そもそもの名前が見つかりません。型クラスのインスタンスを追加しInstanceDても、定義に関する情報はありません。

うまくいかない場合reify、アソシエート タイプのシノニムを手動でリストする以外に回避策はありますか?

この問題は、template-haskell パッケージのバージョン 2.9.0.0 を含む GHC 7.8.3 に存在します。template-haskell パッケージのバージョン 2.7.0.0 を含む GHC 7.4.2 にも存在していました。(私は GHC 7.6.* をチェックしませんでしたが、そこにも存在していたと思います。) GHC の任意のバージョンのソリューションに興味があります (「これは GHC バージョンVでのみ修正されました」を含む)。

0 投票する
1 に答える
339 参照

haskell - Template Haskell を使用してモジュール内のすべての関数を列挙する方法はありますか?

他のほとんどの構文構造に関する情報を取得するために使用できますreifyが、モジュールに関する情報を提供するものは何も見つかりませんでした。