問題タブ [hlist]
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 - HLists を引数リストに変換するボイラープレートのない方法はありますか?
この質問によると、 Spray は sbt-boilerplate を使用して、使いやすさのためにApplyConverter
暗黙的A :: B :: ... :: HNil => R
により伝統的なものに変換するインスタンスを生成します。(A, B, ...) => R
その質問は 1 年以上前に尋ねられました。外部コード生成ステップが不要になるように、たとえばマクロや Shapeless の新しい機能を使用してこれを行うことはできますか?
haskell - HList : ラベルへの文字列
HListを始めようとしています。次の方法で文字列からラベルを生成する方法(関数?)はありますか:
lb はラベルではなく文字列であるため、このコードはそのままではコンパイルされません。これを達成する適切な方法はありますか?ありがとう。
scalaz - パラメーター マッパーの HList Poly1 マッパーの暗黙的な値が見つかりません
私は shapeless 2.1.0 を使用しています -scala 2.11, jdk 1.7: 私は特性を持っています
これは私のコンソールで正しく返されます
ただし、関数にまったく同じロジックがある場合、別の関数呼び出しから HList が返され、それに関数をマップすると、コンパイル時エラーが発生します
私はおそらくいくつかの暗黙的なものを見逃していると思います。形のないテストとドキュメントを確認しました。あまりにも明白なものを見逃さなかったことを願っています。
問題が明らかでない場合は、完全な例を作成して問題を再現できます。読んでくれてありがとう。
ベスト、アミット
更新:例を挙げて
trait Input[T]{ def location:String def value:T }
def 入力の戻り値の型を削除しても、エラーは発生しません。
scala - 属性と型クラスを持つ形状のないケースクラスの方法は?
現在、XML-RPC メッセージとの間でシリアル化および逆シリアル化するライブラリを実装しています。ほとんど完了しましたが、現在のasProductメソッドのボイラープレートを Shapeless を使用して削除しようとしています。私の現在のコード:
私の目標は、私のライブラリのユーザーが定型コードを書かなくても、ケース クラスをシリアライズ/デシリアライズできるようにすることです。現在、前述の asProduct メソッドを使用してケース クラスと暗黙の val を宣言し、Datatype インスタンスをコンテキストに含める必要があります。この暗黙は、次のコードで使用されます。
これは、型クラスを使用してシリアライズおよびデシリアライズする古典的な戦略です。
この時点で、ケース クラスからGenericまたはLabelledGenericを介して HList に変換する方法を把握しました。問題は、この変換が完了すると、asProduct2 の例のようにfromXmlrpcおよびtoXmlrpcメソッドを呼び出す方法です。ケース クラスの属性の型に関する情報がないため、コンパイラはfromXmlrpcおよびtoXmlrpcを満たす暗黙的なものを見つけることができません。HList のすべての要素がコンテキスト内で暗黙的なデータ型を持つように制約する方法が必要です。
私は Shapeless の初心者なので、この機能を実現する最善の方法を知りたいです。私はいくつかの洞察を持っていますが、Shapeless を使用してそれを行う方法がまったくわかりません。理想は、ケース クラスの特定の属性から型を取得し、この型を明示的にfromXmlrpcおよびtoXmlrpcに渡す方法を持つことです。これができる方法ではないと思います。
scala - HList の証拠保全 LUB 制約
すべての要素が特定の型のサブタイプになるように制約された HList が必要だと思います。LUBConstraint
私が望むもののようであり、実際にそのような HList の構築を制約します - しかし、マッピングできるように証拠を再度取得する方法がわかりません (実際には、モナドである必要があるため、トラバースします) HList を介して、各要素で (LUB 型に存在する) メソッドを呼び出します。
さらに、トラバース操作の結果として得られる HList の型を、入力 HList の型とまったく同じ型にする必要があります。
ユース ケースは一種の機能的な「リスナー リスト」です。HList のすべての要素は「イベント」の通知を受け、それらを受け入れるか拒否し、更新された「内部状態」で新しいバージョンを返す必要がある「リスナー」です。 . これだけあれば、通常の不変の Scala コレクションを使用できます。しかし、使用せずに個々の要素に直接型指定されたアクセスも必要ですasInstanceOf
。したがって、HList を使用しようとする動機です。
scala - 標準タプルでの HList スタイル操作の Shapeless 例の再現
私は Scala を初めて使用し、Scala のタプルに HList のような操作を提供する shapeless パッケージを検討しています。
私は scala 2.10.5 を実行しており、パッケージ (バージョン 2.2.0-RC6) とすべての依存関係を正常にインストールしました。
REPL で次の例 ( shapeless feature overviewから) を実行しようとすると、
次のエラー メッセージが表示されます。
これは私のばかげたエラーだと思います。私はこれについて多くのフォーラムを掘り下げてきました。
私は何が欠けていますか?
よろしくお願いします。