問題タブ [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 - 値が引数の順序と一致しない形状のない HList を使用して Scala Function2 を呼び出す
私は同等のものを構築したいと思います:
リスト内の値は、N で 2 つの可能な値の組み合わせを選択するようなものでl.unify
、関数の呼び出しに使用できるのは最大で 1 つです。追加のタイプ情報はありません。
Failure
関数を呼び出す方法がない場合、結果はwithになるはずMatchError
です。それ以外の場合、結果は になりますTry(f(a1, a2))
。
私はまだ形のないことに慣れており、この問題に取り組む方法についての提案をいただければ幸いです。
scala - タプル形状が HList 形状と正確に一致する必要がない、形状のない HList から TupleN へ
次のものに相当するものを作成したいと思います:
使用するコードは、タプルを作成できる値の組み合わせがtoTupleN
1 つだけある場合にのみコンパイルする必要があります。それ以外は、コンパイル時エラーを生成する必要があります。利用可能な暗黙の変換を考慮する必要があります。その中の値のサイズまたは順序に制限がないことに注意してください。N
l
l
例:
この質問は、次の質問に対する回答から生じました。この質問のより一般的な機構は、データ構造の作成と、 を使用した標準関数 (引数の型が異なる) の呼び出しの両方に使用できます。FunctionN#tupled
アップデート:
サブタイプで目的の動作を定義するいくつかの例:
scala - 形のない HList でのタプルのマッピング
あなたがやる
すべてのサブリストをカップルにマップします。しかし、タプルのように HList 要素がより複雑な場合はどうなるでしょうか。自然な試み
コンパイラによって拒否されます。職業はなんですか?それはどこで学べますか?
scala - scala List[String]/List[Object] を model/HList/tuple に変換します
外部システムは Seq[String] (一種の DB、CSV/json のような出力) を返します。これは基本型のラップです: 文字列/数値。自分のモデルで仕事をしたい。
明らかに、毎回 convert-method を実装したくありません。
http://nrinaudo.github.io/tabulate/tut/parsing.htmlよりも簡単なものが必要なようです
ここで HList を使用することは可能ですか? 出力タイプのみを明示的に定義することにより、HList (String:: String:: String:: HNil) のサイズをモデルに変換するようにします。
haskell - HList 内の要素を検索する
から値を抽出する 2 つの関数を作成しようとしていますが、HList
GHC を満足させることができないようです。
extract :: HList a -> [b]
最初の関数には、リストからtype のすべての要素を抽出する署名がありb
ます。型にインスタンスa
を持つように要求することによってのみ、それを書くことに成功しました。Typeable
Typeable
抽出のインスタンスを書き込むために制約を実際に必要としないため、これは最適ではありません。
制約で型の等号と不等号を使用しようとしましたが、インスタンスが重複するだけでした。
私が書こうとしている 2 番目の関数には、リスト内extract' :: Contains h n => HList h -> n
の型の最初の要素を抽出するシグネチャがn
あり、コンテキストは、リストに実際にその型の要素が 1 つ含まれていることを示しています。
制限extract
なしで書くことは可能ですか?Typeable
制限extract'
なしで書くことは可能ですか?Typeable
どのように書くことができますContains
か?
scala - 必要な型を含む HList 型パラメーター
アルゴリズムは頻繁に変更されるため、アルゴリズムの正確な設計図に大きく依存しているプロジェクトがあります。物事のリストを扱い、それらの物事には「事実」が関連付けられています。これらの事実を追跡するために HList を使用したいと考えています。これが私が持っている作業セットアップです(scala 2.11、shapeless 2.3.0):
それが問題です。その正当な理由は、計算のさまざまな部分を実行する多くの小さな関数とオブジェクトがあり、このアルゴリズムの性質上 (私たちはそれを使って多くのことを実験しています)、最小限のコードでそれらを削除して再配置したいと考えています。 -書き込み。そして、コードのこれらの部分は、他のことは何も知らずに、知っておく必要のある特定の事実だけで動作するようにしたいと考えています。これにより、テストが容易になり、各ビットに 1 つの目的が与えられます。
繰り返しになりますが、これらの型を任意の順序でHListWith[T1, T2, ...]
含む HList を定義する (型引数の乱数まで) という型を定義することは可能ですか?T*
scala - Shapeless を使用した型ベースの Id ジェネレーター
次のように呼び出すことができるタイプベースの ID ジェネレーターを実装したいと思います。
IdGen を特性にしたい (可能であれば):
これを Shapeless で実装するにはどうすればよいでしょうか。
私はscala Reflection typeTagを使用してtoStringの結果を反復しようとしましたが、それは醜いです。
haskell - Haskell の無限 (最終的に周期的) HList
無限の一連のアクションがあり、それぞれが特定の型の結果を返すとしましょう。何かのようなもの:
しかし、a
時間の経過とともに変化します。このシーケンスを強く型付けしたい。次のような任意の無限型シーケンスと単純なアプローチには明らかに意味がありません。
Haskell の型システムではサポートされていない無限型になります。しかし、最終的に周期的な HLists (つまり、ある時点からどのような型シーケンスが繰り返されるかなど) に問題はないと思います: [Bool, Int, Int, Sting, Int, Sting, Int, Sting ... ]
)。また、無限型を記述するための強力な正規化方法や、有限数のステップでチェックできる無限型の等価性の証拠を提供する方法があれば、そのような無限型を含むプログラムを型チェックできるはずです。
そのような型をHaskellでどのように表現して使用できるか、誰にもわかりませんか? 今のところ、無限の最終的に周期的な hlist から始めましょう。ただし、より広いクラスの無限の tupes に対して一般化する方法と、一般化の制限がどこにあるのかについて誰かが考えを持っている場合にも感謝します。
scala - 単純化された型シグネチャを持つメソッドのパラメーターとしての HList
コンテナマーカーがあるとします
ここでvalue
、特定のタイプの ID を表しT
ます。
私は2つのクラスを持っています
そして、私はいくつかのことを行う関数を持っています:
だから私はそれを次のように使うことができます
(型シグネチャを明示的に保持することが重要です)
問題は次のように func を変更または拡張して型シグネチャを短くする (マーカー型のみを保持する) 方法です。
scala - 暗黙の Mapped パラメータに対する暗黙の Mapper の奇妙な影響
コンテナマーカーがあるとします
および部分関数のトリック
マッパー用ポリ
および結果メソッド
使用例:
Mapped
コンパイラが暗黙的なパラメーターを見つけられないため、このコードはコンパイル時に失敗します。
しかし、署名Mapper
から暗黙的なパラメーターを削除すると、すべて正常に機能します。PartFunc.apply(...)
したがって、なぜ、どのようMapper
に に影響を与えるのかわかりませんMapped
。