問題タブ [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.
constructor - Clojure reify でコンストラクターを提供する
Clojure で使用reify
する場合、コンストラクターに式を提供するにはどうすればよいですか?
または、基本クラスのコンストラクターに引数を渡すにはどうすればよいですか?
macros - clojure マクロを使用して、reify 呼び出し内でゲッターとセッターを自動的に作成する
多数の (~50) getter および setter メソッド (不規則な名前を持つもの) を持つ巨大な Java インターフェイスを実装しようとしています。マクロを使ってコード量を減らしたらいいなと思いました。だから代わりに
書けるようになりたい
この set-and-get マクロ (または同様のもの) は可能ですか? 私はそれを機能させることができませんでした。
java - reifyで作成された1回限りのインスタンスはNPEを引き起こします
次のようなJavaAPIの周りにClojureレイヤーを書き込もうとしています。
私の目標は、ExecutorJobのメソッドのfn
本体としてを実行できるClojureAPIを作成することです。execute
これは私が思いついたものです:
残念ながら、この呼び出しを考えると:
NPEが発生します。
2番目のパラメーターにいくつかの意味のあるJava呼び出しを入れようとしましたがexecute-as
、これはデバッガーで問題なく実行されていることがわかります。
そのマクロの何が問題になっていますか?
macros - マクロ内の具象化の一部としての動的letフォーム
わかりました。これをまっすぐにしてみましょう。私の最終的な目的は、次のようなマクロをAPIとしてユーザーに提供することです。
Script
結果は、次のようなプロトコルのインスタンスである必要があります。
の最初の引数は、 :defscript
内の対応するキーにバインドする必要があるシンボルのリストであるという考えです。model
model
マクロ展開時には単なるシンボルであるため、パラメーターを使用しようとすると常に壁にぶつかっているため、このような効果を効果的に生成できるコードを思い付くことができません。
invoke-
直接呼び出された場合は正常に動作します。
ただし、正しく展開できないためdefscript
、内部で使用すると機能しません。model
どうすればこのポイントを乗り越えて、ピースを接着できますか?
haskell - Haskellレコードのフィールド名を文字列のリストとして取得しますか?
私が次を持っているとしましょう:
テンプレートHaskellを理解しており、reify
関数でレコードのフィールド名を取得できます。あれは:
テンプレートHaskellなしでこれを行うことができるという主張もあります。誰かがこれを達成できるための実装例を提供できますか?
scala - reify のマクロ展開中の StackOverflowError
reify を使用する簡単なテスト マクロがあります。マクロ展開時に StackOverflowError が発生します。
なぜこれが起こるのですか?どうにか回避できないでしょうか?
編集: これは M6 で起こることです。M7で試してみたところ、次のように表示されます
実装制限: 型 Object{def (): O.type} (ClassInfoType) を具体化できません
これで理由の質問に答えましたが、これを回避する方法があるかどうかという質問はまだ残っています。
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でのみ修正されました」を含む)。
haskell - Template Haskell を使用してモジュール内のすべての関数を列挙する方法はありますか?
他のほとんどの構文構造に関する情報を取得するために使用できますreify
が、モジュールに関する情報を提供するものは何も見つかりませんでした。