問題タブ [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.

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

scala - 2つのHListからすべてのペアのHListを作成する

Scalaでshapelessを使用していますが、2つのHListを受け取り、要素のすべてのペアのHListを返す関数allPairsを作成したいと思います。例えば:

これを行う方法はありますか?

また、インライン化されたコードブロックではなく、関数を探していることを強調したいと思います。

0 投票する
5 に答える
3546 参照

scala - 何かをコンパイルしてはならないというアサーションのテスト

問題

型レベルのプログラミングをサポートするライブラリを使用しているとき、次のようなコメントを書いている自分に気付くことがよくあります ( Strange Loop 2012 で Paul Snivelyによって提示された例から):

または、これはShapelessリポジトリの例から:

これは、これらのメソッドの動作に関する事実を示すための非常に大雑把な方法であり、これらのアサーションをより正式なものにすることを想像することができます-ユニットまたは回帰テストなどのために.

Shapeless のようなライブラリのコンテキストでこれが役立つ理由の具体例を示すために、数日前に、この質問に対する最初の簡単な回答として、次のように書きました。

これがコンパイルされることを意図している場合:

これはしませんが:

uniqueこの型レベルの forの実装がHListうまくいかないことに驚いたのFilterAuxは、後者の場合、Shapeless は喜んでインスタンスを見つけるからです。言い換えれば、おそらくコンパイルされないと予想される場合でも、次のコードはコンパイルされます。

この場合、私が見たのはバグ、または少なくともバグのようなものであり、その後修正されました.

より一般的には、単体テストのようなものでどのように機能するFilterAux についての私の期待に暗示されている種類の不変条件をチェックしたいことを想像できます。型テストの相対的なメリットに関する最近の議論。

私の質問

問題は、プログラマーが何かをコンパイルしてはならないことを主張できるようにするテスト フレームワーク (プラットフォームを問わない) を私が知らないことです。

この場合に想像できる 1 つのアプローチはFilterAux、古いImplicit-argument-with-null-default トリックを使用することです。

これにより、単体テストで次のように記述できます。

ただし、次の例は、はるかに便利で表現力豊かです。

これ欲しい。私の質問は、このようなものをリモートでサポートするテスト ライブラリまたはフレームワークを誰かが知っているかどうかです。

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

scala - Scala でタプルに要素を追加または先頭に追加する方法

タプルがあり、型の安全性を失うことなく要素を追加したいと考えています。これは私が達成したいことです:

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

scala - ネストされたデータの深いリーフで groupBy する FP またはタイプレベル ツール?

深くネストされたデータ構造を取得しました。

Try.isFailure で groupBy を行う機能的な方法はありますか?

ここで見られるように、Shapeless を使用すると、任意のネストされたデータ構造を検索できます。しかし、見つけることは私の問題の一部にすぎません。私はジッパーとレンズを見ました、それらは素晴らしいですが、ここでは適切なツールではありません.

参考までに、データはいくつかのテスト コードの結果を表します。レイヤーは次のとおりです。構成の順列 => テストされたコンポーネント => データの変更 => コー​​ドのテスト。文字列は説明、long は各コンポーネントのテストが完了するまでにかかった時間です。私は 2 つのリストを作成したいと考えています。1 つはすべての失敗が発生したすべての情報を保持し、例外を情報として保持します。もう 1 つは成功に対応します。

すでに解決策はありますか?

注: その特定のケースに対する最も賢明なアプローチは、2 つのリスト、1 つの失敗リスト、1 つの成功リストが最初から作成されるようにテストコードを再設計することです。それでも、知りたいです。この種の問題は珍しいことではないようです。

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

scala - HList のマップは、Scala および Shapeless のジェネリック型のサブタイプで失敗します

次のクラスといくつかの値があるとします (Scala で):

さらに、次の多相関数値を定義します (shapeless を使用)。

これで、次のように呼び出すことができます。

これはすべて成功します(そして私見です)。でも:

私が期待していた場所:

これが機能することに注意してください:

アップデート

それぞれのケースを個別に指定すれば問題ないようです。

ただし、これを少し賢く表現しようとしてもうまくいきません (単純なアプリケーションでも):

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

scala - HList にマップするための追加の引数を提供する

私はこのようなことをしたいと思います:

私のユースケースでは、サブジェクトは実際Subject[T]にはあり、結果にはタイプセーフなバージョンが必要Tです。ので、私は持っています:

ただし、この投稿testFunによると、シングルトン型が必要な構成を渡すことができません。

オプションは次のとおりです。

しかし、HList現在、手術はありませんfill。ヒントはありますか?