問題タブ [shapeless]
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 - 2つのHListからすべてのペアのHListを作成する
Scalaでshapelessを使用していますが、2つのHListを受け取り、要素のすべてのペアのHListを返す関数allPairsを作成したいと思います。例えば:
これを行う方法はありますか?
また、インライン化されたコードブロックではなく、関数を探していることを強調したいと思います。
scala - 何かをコンパイルしてはならないというアサーションのテスト
問題
型レベルのプログラミングをサポートするライブラリを使用しているとき、次のようなコメントを書いている自分に気付くことがよくあります ( Strange Loop 2012 で Paul Snivelyによって提示された例から):
これは、これらのメソッドの動作に関する事実を示すための非常に大雑把な方法であり、これらのアサーションをより正式なものにすることを想像することができます-ユニットまたは回帰テストなどのために.
Shapeless のようなライブラリのコンテキストでこれが役立つ理由の具体例を示すために、数日前に、この質問に対する最初の簡単な回答として、次のように書きました。
これがコンパイルされることを意図している場合:
これはしませんが:
unique
この型レベルの forの実装がHList
うまくいかないことに驚いたのFilterAux
は、後者の場合、Shapeless は喜んでインスタンスを見つけるからです。言い換えれば、おそらくコンパイルされないと予想される場合でも、次のコードはコンパイルされます。
この場合、私が見たのはバグ、または少なくともバグのようなものであり、その後修正されました.
より一般的には、単体テストのようなものでどのように機能するFilterAux
かについての私の期待に暗示されている種類の不変条件をチェックしたいことを想像できます。型とテストの相対的なメリットに関する最近の議論。
私の質問
問題は、プログラマーが何かをコンパイルしてはならないことを主張できるようにするテスト フレームワーク (プラットフォームを問わない) を私が知らないことです。
この場合に想像できる 1 つのアプローチはFilterAux
、古いImplicit-argument-with-null-default トリックを使用することです。
これにより、単体テストで次のように記述できます。
ただし、次の例は、はるかに便利で表現力豊かです。
これ欲しい。私の質問は、このようなものをリモートでサポートするテスト ライブラリまたはフレームワークを誰かが知っているかどうかです。
scala - Scala でタプルに要素を追加または先頭に追加する方法
タプルがあり、型の安全性を失うことなく要素を追加したいと考えています。これは私が達成したいことです:
scala - ネストされたデータの深いリーフで groupBy する FP またはタイプレベル ツール?
深くネストされたデータ構造を取得しました。
Try.isFailure で groupBy を行う機能的な方法はありますか?
ここで見られるように、Shapeless を使用すると、任意のネストされたデータ構造を検索できます。しかし、見つけることは私の問題の一部にすぎません。私はジッパーとレンズを見ました、それらは素晴らしいですが、ここでは適切なツールではありません.
参考までに、データはいくつかのテスト コードの結果を表します。レイヤーは次のとおりです。構成の順列 => テストされたコンポーネント => データの変更 => コードのテスト。文字列は説明、long は各コンポーネントのテストが完了するまでにかかった時間です。私は 2 つのリストを作成したいと考えています。1 つはすべての失敗が発生したすべての情報を保持し、例外を情報として保持します。もう 1 つは成功に対応します。
すでに解決策はありますか?
注: その特定のケースに対する最も賢明なアプローチは、2 つのリスト、1 つの失敗リスト、1 つの成功リストが最初から作成されるようにテストコードを再設計することです。それでも、知りたいです。この種の問題は珍しいことではないようです。
scala - HList のマップは、Scala および Shapeless のジェネリック型のサブタイプで失敗します
次のクラスといくつかの値があるとします (Scala で):
さらに、次の多相関数値を定義します (shapeless を使用)。
これで、次のように呼び出すことができます。
これはすべて成功します(そして私見です)。でも:
私が期待していた場所:
これが機能することに注意してください:
アップデート
それぞれのケースを個別に指定すれば問題ないようです。
ただし、これを少し賢く表現しようとしてもうまくいきません (単純なアプリケーションでも):
scala - HList にマップするための追加の引数を提供する
私はこのようなことをしたいと思います:
私のユースケースでは、サブジェクトは実際Subject[T]
にはあり、結果にはタイプセーフなバージョンが必要T
です。ので、私は持っています:
ただし、この投稿testFun
によると、シングルトン型が必要な構成を渡すことができません。
オプションは次のとおりです。
しかし、HList
現在、手術はありませんfill
。ヒントはありますか?