問題タブ [applicative]

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

scala - zip() を使用せずに異なるタイプの Future を単一の Future に結合する方法

Future[(Class1,Class2,Class3)]以下のコードからタイプの Future を作成したいと思います。ただし、これを行う唯一の方法は、zip() を使用することです。ソリューションは醜く、適切には最適ではありません。誰でも私を啓発できますか。

私も使用しようとしましFuture.sequence(List(f0, f1, f2))たが、これは機能しません。元の型を保持する 3 タプルが必要なのに対し、新しい Futureは lub の型Future[List[U]]を持つためです。UClass1/2/3

0 投票する
2 に答える
1379 参照

haskell - レコードの適用可能なコンストラクター

レコードのパーサーを作成するために、haskellレコードのアプリケーションコンストラクターを一般的に作成したいと思います。

記録を考えてみましょう:

私が欲しいコンストラクター:

基本タイプのパーサーは次のとおりです。

すでにこれを実行できるライブラリはありますか?レコードのgetParserを定義することはおそらく可能ですか?前もって感謝します。

0 投票する
4 に答える
365 参照

scala - この構成ロジックを Scala でコーディングする方法は?

これは私の前の質問のフォローアップです

次のロジックを (準 Java で) 使用して構成パラメーターを取得するとしますMyParam

このロジックを Scala でコーディングするには? Applicativeここに適用されますか?

0 投票する
4 に答える
3010 参照

haskell - 「Const」アプリカティブファンクターは何に役立ちますか?

Constのドキュメントで見つけたばかりですが、直接Control.Applicative使用するだけでなく、これが役立つ場所を見つけるのに苦労していMonoidます。

私は何が欠けていますか?

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

haskell - フォームレット/消化ファンクターのフィールドを無効にしますか?

formlets/digestive-functors を使用して、実行時にフィールドを選択的に無効にする方法を見つけようとしています。フィールドを無効にすると、フィールドの表示と検証の両方が無効になります。

不自然な例: 基本的なフォームのデータ型が次のようになっているとします。

ただし、deptIdフィールドはユーザーが従業員である場合にのみ表示する必要があり、それ以外の場合はcompanyフィールドを表示する必要があります。また、agreeユーザーがまだ [同意する] ボックスをクリックしていない場合は、フィールドが表示されます。

可能なバリエーションごとに異なるフォームタイプを作成したくありません:(favcolor、deptId、同意する)、(favcolor、deptId)、(favcolor、会社、同意する)、(favcolor、会社)。他に何ができますか?

0 投票する
4 に答える
807 参照

function - Haskellのリストに関数のタプルをマッピングすることは可能ですか?

私はこのようなことをする方法を見つけようとしています:

タプル(1, 3)を出力として生成します。

理論的にはアプリケーションファンクターに似ているように見えますが、少し逆になっています。これを行う(または何らかの方法で作成する)同様の関数があると思いますが、それを見つけられない/理解できないようです。

私はこのような関数を定義しようとしました:

しかし、GHCは実際にはこれをコンパイルしません。

どんな助けでも素晴らしいでしょう。ありがとう!

編集(1年後!):

型アノテーションfmap'が間違っていたため、コンパイルできませんでした。明らかに、私がやっていたことを行うためのより良い方法がありますが、fmap'代わりに私のタイプは次のようになります。

その場合、コンパイルして正常に実行されます。

0 投票する
4 に答える
5181 参照

haskell - アプリカティブ ファンクターとして機能する (Haskell / LYAH)

Learn You a Haskellの第 11 章では、次の定義が紹介されています。

ここで、著者は特徴のない手を振っています (「<*> のインスタンスの実装は少し不可解なので、[説明せずに実際に表示する] だけにするのが最善です」)。ここの誰かが私がそれを理解するのを手伝ってくれることを願っています。

適用可能なクラス定義によると、(<*>) :: f (a -> b) -> f a -> f b

((->)r)インスタンスでは、次のように置き換えますfr->(a->b)->(r->a)->(r->b)

最初の質問は、その型から にどうやって取得するf <*> g = \x -> f x (g x)かということです。

しかし、最後の式を当然のことと思っていても、GHCi に与えた例と一致させるのに苦労しています。例えば:

代わりに、この式はf <*> g = \x -> f (g x)(このバージョンでは のx後に表示されないことに注意してくださいf

ごちゃごちゃしていると思いますので、よろしくお願いします。

0 投票する
4 に答える
1362 参照

scala - Scalaz には、エラーと成功の両方で蓄積するものがありますか?

Scalaz 7 Validation や disjunction を使用して、失敗する可能性のある操作のリストを処理し、その結果を管理し始めました。

この種のユースケースには、十分に文書化された 2 つのケースがあります。

1/ 何かの条件のリストをチェックし、エラーがあればそれを蓄積したい。ここでは、常にリストの最後に移動し、エラーが発生した場合、グローバルな結果として失敗します。そして、それは機能するアプリカティブ ファンクターです。

2/ 失敗する可能性のあるいくつかのステップを実行し、最初に失敗したステップで停止したい。ここに、理解のために Scala でうまくいくモナドがあります。

したがって、同じ行にある他の 2 つの使用例がありますが、前例のいずれにもうまく対応していないようです: ステップのリストを処理し、失敗する可能性があり、エラーと成功の両方の結果を蓄積したい (例:これはファイルの変更のリストであり、エラーが発生する可能性があるのは、それが外界であるためです。成功した場合は、後で保持したいパッチです)。

2 つのユース ケースの違いは、(最初のエラーで) 早期に停止するか、リストの最後に移動する場合のみです。

OK、それで正しいことは何ですか?

(質問を書くと、それは単純なfoldLeftだと思いますよね?ここで質問を検証させます。他の誰かが不思議に思うなら)

0 投票する
3 に答える
291 参照

haskell - アプリケーションリライト(Haskell)

Haskellの表現がどのように機能するかを理解していないと、それをより基本的な形に分解するのに役立つことがよくあります。

次の定義を使用する

私は次のように書き直しsequenceA [(+3),(+2)] 3ました

そしてそれをに変えました(フォーマットを許してください;私は行を分割するための規則が何であるかわかりません)

(\d ->(\c->(\b -> (\a -> (\_ -> (:)) a (+3) a) b (\_ -> (:)) b) c (+2) c) d (\_ -> []) d) 3

手作業で作業する場合は正しいように見えますが、GHCiに受け入れてもらうことはできません。私はここで何を間違えましたか?私の2番目の質問は、この形式から機能合成に変換する方法です。ドットをさまざまな組み合わせで置き換えてみましたが、GHCiはそれらすべてを拒否します。

0 投票する
3 に答える
976 参照

haskell - 適用可能なファンクターにブラケット構文糖衣を使用することは可能ですか?

McBrideとPatersonの「エフェクトを使用したアプリケーションプログラミング」では、純粋関数を持ち上げるための素敵な構文糖衣を紹介しています。

にとって

どこかでli f w x y z ilorを使用している人を思い出します。これは、既存の言語機能ととの狡猾な定義をil f v w x y z li使用して定義できるためかもしれないと思いました。liil

私はこれについての言及を論文以外に見つけることができず、それを仮定して[||]すぐにghcに現れる可能性は低いと仮定して、実装することは可能liですilか?私は彼らにとって賢明なタイプを考えることができないので、私はテンプレートHaskellまたは同様のものが必要だと思いますが、これを達成するのに十分な知識はほとんどありません。[af| f x y ]大丈夫ですが、試してみる前にそれが可能かどうかはわかりません。可能であれば、確かに助けが必要です。