問題タブ [scala-macros]

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 投票する
2 に答える
293 参照

scala - コンパイラが推測する暗黙の変換と明示的に呼び出されたものを区別する方法は?

これら 2 つの同等の式を Scala マクロに渡すことを想像してみましょう。

  • コンパイラが推測する暗黙の変換:1+"foo"
  • 明示的に呼び出された暗黙の変換:any2stringadd(1)+"foo"

マクロ内でこれら 2 つを区別する方法はありますか?

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

class - Scalaでのシンボルのインポートとワイルドカードインポート

パッケージ、オブジェクト、クラスを表すシンボルのリストがあり、それらをマクロコンテキストにインポートしたいと思います。

パッケージとオブジェクトの場合、これはワイルドカードインポートを意味し、クラスの場合、これは「標準」インポートを意味します。

、、およびでList[Symbol]構成されている場合some.package、それらを適切にインポートするにはどうすればよいですか。また、「標準」インポートとワイルドカードインポートのどちらを使用する必要があるかを判断するにはどうすればよいですか。some.Classsome.Object

私の現在のアプローチはこれです:

パッケージ/モジュールのインポートは機能しますが、クラスのインポートは正しく見えますが機能しません。

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

scala - selectDynamicのマクロ実装でインスタンスメソッドを呼び出す

Sample#cap(String)selectDynamicの次のマクロ実装で使用したいと思います。

出来ますか?

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

scala - WeakTypeTagまたはTypeが具象型を表しているかどうかを確認するには?

WeakTypeTagorTypeが具象型を表しているかどうかを確認するにはどうすればよいですか? これは、ユーザーが指定した型が具体的でない場合にコンパイルエラーを発生させるために使用できるマクロで特に役立ちます。

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

scala - リフレクションまたはマクロを使用するときにシンボルを確実に比較する方法は?

Symbolscala マクロで、またはリフレクションを使用しているときに、2 つの s が等しいかどうかを確実に比較するにはどうすればよいですか? Symbol2 つのオブジェクトが同じシンボル (同じクラス、同じローカル値または変数など) を表す場合、それらが==演算子に関して等しいことが保証されていますか?

これは何のために必要ですか?Treeローカル値を参照する可能性のある式を表すマクロを持っています。このツリーを変換し、このローカル値へのすべての参照を他の値への参照に置き換えたいと考えています。

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

scala - ランタイムに渡すためにシンボルを具体化するにはどうすればよいですか?

Scala のマクロ コンテキストには、2 つの便利なメソッドがreifyTypeありreifyTreeます。実行時に実行されると具体化されたTypeorを返すコードを本質的に生成する とTreeです。

sで同様のことを達成する方法があるのだろうかSymbol- ある種のreifySymbol方法?

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

scala - Eclipse を使用して Scala マクロをデバッグする方法

Eclipse IDE を使用して Scala マクロ実装にブレークポイントを設定しようとして失敗しました

まず、Scala Macros Rock! 今までは Scala よりも Clojure を好んでいましたが、マクロについてはよくわかりません

関数の toString と関数自体を返すマクロを作成しようとしています。それが機能したら、適切な toString を使用して新しい関数を作成します。ああ幸せな日々。

しかし、マクロをデバッグできる必要があります。私は Eclipse (20110615-0604) と Scala (2.10.1) を使用しています。scala-compiler-2.10.1.jar をダウンロードすると、http://www.warski.org/blog/2012/12/starting-with-scala-macros-a-short-tutorial/ のコードが機能するようになりまし。簡単なマクロもいくつか書いています。マクロはEclipseプロジェクト「ScalaMacro」にあり、それらを使用するコードは別のプロジェクト「HelloScalaMacro」にあります

私は今それらをデバッグしたいと思います

http://docs.scala-lang.org/overviews/macros/overview.htmlの指示に従って、scala.tools.nsc.Main をエントリ ポイントとして実行時の構成を作成しました。-cp HelloScala.scala を追加しました。構成を実行すると、実際にコードがコンパイルされているように見えます (エラーを入力すると、エラーが正しく報告されます)。

残念ながら、この手順では、マクロ実装のブレークポイントによって Eclipse が一時停止する必要があることを暗示しています。そうではありません。

私はいつものように Eclipse/Scala マクロ/デバッグ/ブレークポイントを Google 検索し、scala-macro タグのすべての stackoverflow の質問を読み、見つけたすべての Eclipse 設定でいろいろ試しました。

それで、ブレークポイントを設定する方法を知っている人がいる場合は、その方法を教えていただけますか:それはEclipseバージョン/ scalaバージョン/ ...の問題ですか?