問題タブ [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 - scala で形状のない概念の学習を開始するにはどうすればよいですか
Scala のポリタイプの概念について学びたいと思っています。シェイプレス ライブラリを見つけて、シェイプレスを学習して適用するための最良の出発点となるものを見つけました。
scala - Shapeless: 多相関数の型制約のチェック
私は、タイプを使用して、エンティティの単位をチェックする経済モデルの小さなライブラリに取り組んでいval apples = 2.0
ますval apples = GoodsAmount[KG, Apples](2.0)
。商品のバンドルを作成するために、シェイプレス ライブラリの HLists を使用しようとしています。これは問題なく動作しますが、場合によっては、私が好むほど汎用的なコードにすることはできません。たとえば、次の問題を参照してください。
何をシェイプレスに持ち上げたいかを説明する簡単なコードから始めます。Km、その他のマイルを表す 2 つのクラスを作成します。Km クラスは追加できますが、マイルは追加できません。抽象型 T を使用する主な動機は、より複雑なライブラリです。そして、'+' 関数の間接的な呼び出しは、形状のないケースの後ろに似たものが必要なためです。
これは意図したとおりに機能します。ただし、「add」関数で型制約チェックを行う必要があります。これを HLists に拡張する私の試みは次のようになります。
しかし、これは次のエラーメッセージを生成します (Scala 2.10.2 を使用):
type Constraint を caseTuple 関数に追加できた場合、最初のエラーを修正する必要がありますが、正直なところ、at 関数がどのように機能しているか、暗黙の証拠パラメーターをどこに追加できるかを理解していません。また、マッパーが暗黙の値を見つけるために何をしなければならないかもわかりません。
caseTuple 関数を次のように置き換えます。
正常に動作しますが、多くの冗長なコードを記述する必要があります (わかりました、このソリューションは、タプルを使用する現在のソリューションよりも優れています)。誰かがこの問題を解決する方法を教えてもらえますか?
ありがとう、クリンケ
scala - Map Scala のさまざまな型
さまざまなタイプの値 (Double、String、Int など) を入れる Map が必要です。キーは String にすることができます。
これを行う方法はありますかmap.apply(k)
?
私はすでにジェネリック型で試しました
Container
しかし、パラメータを取るので不可能です。これに対する解決策はありますか?
scala - 大文字と小文字を形状のない変数と一致させるにはどうすればよいですか?
case を shapeless variable と一致させるにはどうすればよいですか?
次のタイプの変数があるとしましょうshapeless.::[String,shapeless.::[String,shapeless.HNil]]
現在、私はこれをしなければなりません
String :: String :: HNil
別のステートメントで行う必要がないように、どういうわけか文字列ペアに巻き戻すことはできますか?
scala - 関数から HList の複数のバリアントを返す方法は?
持つ
次のようにコーディングする形のない方法は何ですか?:
そして、それをある意味で使用するには:
「Why `List[B]` is not a subtype of `Seq[L]` when `class B extends A` and `L <: A`? "。
scala - Scala パラメーター パターン (スプレー ルーティングの例)
あいまいなタイトルで申し訳ありません...これを特徴付ける方法がわかりませんでした。
しばらくの間、Scala で特定のコード構成を見たり使用したりしましたが、それがどのように機能するかわかりません。次のようになります (スプレー ルーティングの例)。
この例では、パス内のセグメントは、関連付けられたブロック内でそれぞれ a と b にバインドされます。このパターンの使用方法は知っていますが、どのように機能しますか? 何かを「foo」にバインドしなかったのはなぜですか?
ここで自分の目的のためにスプレーがどのように機能するかについてはあまり興味がありませんが、これは Scala のどのような機能であり、自分でどのように記述すればよいでしょうか?
scala - 他の場所 (vals ではない) に格納された新しいオブジェクト型とインスタンスの構築
次のクラスを検討してください。
データはインスタンスに直接保存されます。厳密に型指定されたマップ「他の場所」にデータを保存したいと思います。何かのようなもの:
次に、 shapelessHList
の s に似た厳密に型指定されたマップを作成したいと思います。何かのようなもの:
これにmapAddress
は、スロットのセットを完全に記述するタイプが必要です。
mapAddress
インスタンスにはスロットのリストが含まれている必要があります (これは簡単です) 。
最後に、直接宣言されたオブジェクトのすべての利点を持ちながら、「別の場所」に格納できる複合「オブジェクト」を構築する方法を取得します。反射なしの反射のようなもの。
問題は — どうやって目標を達成するか? scalaz / shapelessを目的に使用するにはどうすればよいですか?
scala - HList からの検証をケース クラスに適用する
アプリケーションファンクター (単一で失敗するだけでなく、複数の例外をキャッチするモナド) で検証を試みたときに、14 を超えるファンクターを禁止する scalaz のハードリミットに遭遇したので、ここからの有益なコメント ( https://github .com/scalaz/scalaz/issues/504#issuecomment-23626237 ) は、アプリケーション ファンクターの代わりに HList を使用するように案内してくれました
今では完全に正常に動作します (Maven https://github.com/typelevel/shapeless-contrib/blob/master/scalaz/main/scala/sequence.scalaにないため、ここからこのシーケンス ファイルを手動で配置する必要がありますか?ソース=c )
私の質問は、これが可能であることを知っています。case class Foo(i:Int,s:String)
手動でパターンをケースと一致させることなく、パラメーターを再度適用するだけで、自動的にインスタンス化する方法を教えてください。
本質的に私はこのようなことをしたい