問題タブ [haskell-persistent]

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 投票する
0 に答える
76 参照

haskell - Haskell のクラス制約を減らし、永続テーブルを検査する

ID を受け取り、結合テーブルを通過して、永続的およびスポックを使用して結合されたすべてのレコードを返す基本的なエンドポイントをセットアップしようとしています。実際の実装は次のようになります。

質問 1: これらの関数では、クラスの制約をそれほど大きくする必要がありますか? これらのモナドを構成しようとすると、非常に多くの制約があるため、すぐに疲れてしまうようです。Constraint Kinds を使用して制約同義語を設定できることを見てきましたが、非常に多くの制約が必要なために何か間違ったことをしているような気がします。

また、結合操作を実行するためのより一般的なメソッドを記述できるかどうかも確認したいと考えていました。おそらく、入力タイプと結合に使用されるテーブルを取得するだけで十分な情報であり、コンパイラーは出力タイプを推測でき、(少なくとも Ruby のような言語では) 結合テーブルのタイプを調べて適切な列を見つけることができます。に参加します。何かのようなもの:

しかし、そのような機能を実装しようとすることは私を超えています。結合に使用するテーブルに関する情報を渡す最善の方法がわかりません。列を明示的に渡すバージョンを実装しました (以下)。これは機能しますが、これも大きなクラス制約があり、必要以上に大きなメソッド シグネチャを使用します。上記の署名のようなものを達成する方法はありますか?

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

haskell - Esqueleto と Persistent を同じ関数に混在させる

私はひどくばかげたことをしているかもしれませんが、同じ関数でいくつかの Esqueleto を通常の Persistent クエリと組み合わせたいと考えています。

私は機能を持っています:

loadPlanetConstructionQueue には署名があります (これは結合を実行するため、ここでは Esqueleto を使用したいと思います):

これは機能せず、次のエラーが発生します。

「BackendCompatible SqlBackend backend」と「BaseBackend backend ~ SqlBackend」の違いが関係していると思います。

これを機能させる方法はありますか?この場合、selectList の部分を Esqueleto で記述できますが、さらに下の行では、Esqueleto でサポートされていない置換を使用する必要があります (と思います)。

私は Haskell、Persistent、Esqueleto についてあまり知らないので、ここで少し迷っています。