問題タブ [semigroup]
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.
sorting - この Haskell ソートコードで Data.Semigroup ((<>)) は何をしますか?
プログラムは、製造元または年でリストを並べ替えることができます。(<>)とは?
scala - なぜセミグループはオプション型を持ち、モノイドの中立的な要素のように振る舞うのですか?
Semigroup に Option タイプがあり、None が Monoid のニュートラル要素のように動作するのはなぜですか?
haskell - Haskell で Semigroup データ型インスタンスを作成する
目標は、Haskell で新しく定義されたデータ型の新しいセミグループ型クラス インスタンスを作成することです ( Will Kurt による「Get Programming with Haskell」の本を知っている人のために、428 ページ、つまり capstone プロジェクトの終わりを参照してください)。 5 運動延長あり)。
新しく定義されたデータ型があります。
m
このデータ型は、コンテキスト (モナドまたは代替) を定義するSQL に似たクエリを指定します(m a -> m b)
。目的は SQL 関数SELECT
に似ています。つまり、データベースで見たいプロパティの種類を定義します(m a)
。前の関数を適用し (SQL のtable_nameに似ています)、最終的に(m a -> m a)
探しているプロパティを除外します (SQL の に似ていますWHERE
)。
私の目標は、このデータ型をセミグループ (そして最終的にはモノイド) のインスタンスにすることです。a
などに必要なすべてのセミグループ インスタンスb
が想定されていることに注意してください。
したがって、大まかなアイデア (より明確にするための背景) は、データベースへのいくつかの異なるクエリを単一のクエリに構成できるようにすることですが、2 つの異なる関数をマージする方法を思いつくことができませんでした。(m a -> m b)
同時に 1 つに入力して、2 つのテーブルをマージする(m a)
... 最初のアイデアは、それらをリストに結合することでしたが、その後、型シグネチャが変更されました。これに対する解決策はまだ見つかりません。