問題タブ [haskell-spock]

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

haskell - モナド変換子を Spock アプリに追加するには?

チュートリアルに従って、基本的な Hello World Spock アプリを作成しましたが、独自のモナド トランスフォーマー をFooT何らかの方法で Spock トランスフォーマー スタックに追加したいと考えています。

この回答を見つけましspockTたが、最新バージョンのスポックでは実際には使用されていないようです。aと aspockを取る関数があるように見えますが、モナド変換子を指定できる引数を取るものは何もありません。、、または他のモナド変換子をスポック変換子スタックに挿入することはまだ可能ですか? 私は何を誤解していますか?ありがとうございました!SpockCfgSpockMmFooTStateT

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

haskell - Spock Web サーバーでバイト文字列を出力する

Spock で実行されている Web サーバー (たとえば、localhost) でバイト文字列本体を視覚化します。

私の目標: Web サイトを作成し、バイト文字列 (テキストに変換) を表示します。 JSON 構造。一般的な考え方は、応答本文を使用して、restAPI Web サイトに送信される JSON クエリ構造 (ユーザーが質問を作成できる) を作成することです。

私はこのようなリクエストを作成することができます:

次に、それを使用して API ページをクエリしました

次に、短い SpockM モナドを続けます。

fct が等しい

すべてが正常にコンパイルされます。次のような呼び出しで GHCI で結果を確認することもできます: connect >>= (\ x -> print x)(getRequest "GetProperties" と同じ)ハンドラー (たとえば、のテキスト関数のようにdo get ... $ text -> ActionCtxT ctx m a) であり、main()runSpock 8080 (spock spockCfg app1) の spock関数によって処理する必要があります。のHtml ()私が研究した多くの例に現れて機能するタイプ。すべての解析とリクエストの構築は HTTP.Simple で行われます (あまりエレガントではありませんが、たとえば、動作する必要があることはわかっています)。これはlucidIOまでエスケープできません-間違ったMonadを選択している可能性があります(つまり、IO:しかし、IOを使用すると、ghciのすべてをチェックできます)。この ByteString をブラウザに出力する方法のヒントを教えてください。