問題タブ [scala-2.13]
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.
scala - Scala Compiler がスローする: java.lang.IllegalAccessError: Class 'scala.tools.nsc.transform.patmat.PatternExpansion$ExtractorAlignment'
プロジェクトの 1 つを scala 2.13.4 にアップグレードした後、次のエラーが発生します。
(完全なスタックトレースはこちらhttps://gist.github.com/froth/f4819191644ef6ced0be682ad55f8fa0で、かなり長いものです)
私はコード ベースに何も変更を加えておらず、自分のプロジェクトで LazyList を積極的に使用していません。さらに複雑にするために:それは私のマシンで動作し、パイプラインで失敗します(同じJavaバージョン、同じsbtバージョン(sbt 1.4.4(AdoptOpenJDK Java 11.0.8))、すべてのキャッシュをクリアしました)。
これはマルチプロジェクト ビルドであり、最上位の build.sbt はhttps://gist.github.com/froth/516c4ea6f8bd98ed87e6a8cadaa117d1のようになり、サブプロジェクトでは次のようになります: https://gist.github.com/froth/03af73900724f47154a0b2477edb47ca
再現するのが難しく、さらに内部の依存関係がある内部プロジェクトであるため、これが私が提供できるすべてです。
私の質問は、何が原因で何ができるか知っている人はいますか? または、誰かがこれをさらにデバッグする方法や、何がうまくいかないかについてより多くの情報を取得しようとするアイデアを持っている場合.
scala - scalaで、型クラスをAuxパターンで機能させる方法は?
簡単な例を次に示します。
オブジェクト Base/ForH には明らかに安定したパスがあります。これにより、コンパイラが type を解決できない可能性がなくなりますForH.Out
。
私を悩ませているのは、コンパイラがForH <:< Aux[HNil]
. IMHO 両方の機能 (型ラムダと型クラス) は関数型プログラミングの重要な側面ですが、なぜ同時に連携できないのでしょうか?
コンパイラの設計に精通している場合は、追加の質問があります。それを実現するために型クラス検索アルゴリズムを改善するには何が必要ですか? ご意見ありがとうございます。
更新 1 : 特定の修正が提案されましたが、それを一般化しようとして別の問題があります。「 In scala, how to make type class working for Aux pattern?」を参照してください。-詳細はパート 2