問題タブ [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.
regex - Applicative Functor を使用して 3 つの Scala 正規表現のうち少なくとも 1 つを照合する
3 つの Scala 正規表現があり、それらのいずれかが特定の文字列に一致するかどうかをテストする必要があります。
私は次のことができることを知っています:
しかし、 Scalazライブラリの Applicative Functor または Monad を使用してこれを行う方法があると思います。
これはどのように行うことができますか?
haskell - Control.Applicative.Lift は何に役立ちますか?
transformers
最近のブログ投稿で、「人々は何のために Control.Applicative.Lift を使用するのですか?」と尋ねた人がいました。私はこれに答えることができなかったので、質問を StackOverflow にエコーします - 何に Control.Applicative.Lift
使用されますか?
パッケージに使用例が 1 つありますが、その機能を完全に解析できるわけではないようです。野生の他の例を知っている人はいますか?
haskell - 2つの引数を持つコンストラクターの適用可能なスタイルパーサー
山かっこでコンマ区切りの値のペアのパーサーを記述したいと思います。私はそれを次のアプローチで動作させることができました:
ただし、Fooコンストラクターでは、タプルではなく2つのパラメーターを使用することをお勧めします。
そのようなパーサーを書くための最良の方法は何ですか?理想的には、このような標準のパーセクパーセクを再利用angles
し、可能な限りアプリケーションを使用したいと思います。
haskell - Haskellフィルターの作成
zxcvbnパスワード強度アルゴリズムをHaskellに変換しています。
すべての文字がASCIIであるかどうかをチェックし、ブルートフォース攻撃が可能であることを確認する2つの関数があります。
と
これらを1つの関数に構成しました。
用語がnullでないかどうかを確認するために、3番目のフィルターでこれらを作成する必要があります。
私はフィルターのチェーンを作成していることに気づきました。フィルター関数のリストを取得し、指定された順序でそれらを構成する単一の関数を作成する方が理にかなっています。
読んだことを思い出すと、これは応用ファンクターの仕事だと思います。これにApplicativeを使用できますか?
フィルタリングする前に、1つのベースのインデックスを持つ各アイテムを処理するfilterShort
必要がある関数を処理する方法がわかりません。zip
haskell - Haskell-Applicativeの場合、効果の順序は決定論的ですか?
で定義されたIOアクションを実行する場合someFun <$> (a :: IO ()) <$> (b :: IO ())
、a
およびb
アクションの実行は順序付けられていますか?つまり、a
以前に実行されたものを信頼できb
ますか?
GHCの場合、IOがStateを使用して実装されていることがわかります。また、これがApplicativeインスタンスであることがわかりますが、実際のインスタンス宣言のソースが見つかりません。Stateを通じて実装されるということは、さまざまなIO効果を連続させる必要があることを示唆していますが、それらの順序を定義する必要はありません。
GHCiで遊んでみると、Appliativeは効果の順序を保持しているように見えますが、それは普遍的な保証ですか、それともGHC固有ですか?詳細に興味があります。
ありがとう!
haskell - getZipList はどのように定義されていますか?
getZipList が ghc のどこで定義されているか知りたいです。Control.Applicative には、ZipList のこの定義があります。
ZipLists を使用する 1 つの方法は (LYAH から):
getZipList が何を返すかをどのように知っているのか興味があります。おそらく、newtype キーワードについて何かが欠けているのでしょう。ありがとう!
haskell - applicative functor には副作用があるのに、functor にはできないのはなぜですか?
この質問をするのはばかげている気がしますが、しばらく頭に浮かんでいて、答えが見つかりません。
問題は、なぜアプリケーション ファンクターには副作用があるのに、ファンクターにはできないのかということです。
たぶん、彼らはできるのに、私は気づいていません...?
haskell - attoparsecを使用して固定長テキストを解析します
attoparsecを使用して固定長フィールドを解析する必要がありますが、コンパイラーで苦労しています。私はまだ初心者です、以下のコードは私が持っている最も近い解決策です:
これはすべて素晴らしいですが、スペースのない都市を返すだけです。
市のテキスト文字列に20文字を使用するためにapplicativeを使用してみました
そしてさえdo syntax
しかし、どちらのアプローチもこのエラーでコンパイルに失敗します。
がタイプを持っているText -> Text
ときにghcが要求する原因は何ですか?take
Int -> Text -> Text
アプリケーションと構文の両方でそれを解決するにはどうすればよいですか?
haskell - モナドからアプリカティブへの変換
わかりました。Applicative
型クラスに含まれるものと、それがなぜ役立つかはわかりました。しかし、重要な例でそれをどのように使用するかについて、頭を悩ませることはできません。
たとえば、次のかなり単純な Parsec パーサーを考えてみましょう。
Monad
のインスタンスを使用せずに、一体どのように記述しますParser
か? 多くの人がこれを行うことができ、良いアイデアだと主張していますが、どのように正確に理解することはできません.
haskell - 適用可能なファンクターでもっと楽しく
以前、Parsecの適用可能なファンクターインスタンスのみを使用するようにモナディックコードを変換することについて質問しました。残念ながら、私は文字通り尋ねた質問に答えるいくつかの返信を受け取りましたが、実際には多くの洞察を与えませんでした。では、もう一度試してみましょう...
これまでの私の知識を要約すると、適用可能なファンクターは、モナドよりもいくらか制限されているものです。「少ないほど多い」という伝統では、コードが実行できることを制限すると、狂ったコード操作の可能性が高まります。とにかく、多くの人は、モナドの代わりにアプリケーションを使用することが、可能な場合は優れたソリューションであると信じているようです。
Applicative
クラスはで定義されています。Control.Applicative
そのHaddockのリストは、クラスメソッドとユーティリティ関数をそれらの間にある膨大な数のクラスインスタンスでうまく分離し、画面上のすべてを一度にすばやく表示することを困難にします。しかし、適切な型署名は
完全に理にかなっていますよね?
さて、Functor
すでに私たちに与えますfmap
、それは基本的に<$>
です。x
つまり、からへの関数が与えられた場合、y
をにマップすることができf x
ますf y
。Applicative
2つの本質的に新しい要素を追加します。1つはpure
、とほぼ同じタイプですreturn
(およびさまざまな圏論クラスの他のいくつかの演算子)。もう1つは<*>
、関数のコンテナーと入力のコンテナーを取得して、出力のコンテナーを生成する機能を提供するです。
上記の演算子を使用すると、次のようなことを非常にうまく行うことができます
これにより、N-ary関数を取得し、任意のNに簡単に一般化できる方法でN個のファンクターからその引数を取得できます。
これだけ私はすでに理解しています。私がまだ理解していない2つの主要なことがあります。
まず、関数*>
、、<*
および<$
。それらのタイプから、、、<* = const
および*> = flip const
は<$
類似したものである可能性があります。おそらく、これはこれらの関数が実際に何をするかを説明していません。(??!)
次に、Parsecパーサーを作成する場合、通常、各解析可能エンティティは次のようになります。
アプリケーションファンクターでは、このように中間結果を変数にバインドできないため、最終段階でそれらを収集する方法に戸惑います。これを行う方法を理解するのに十分なほど、アイデアに頭を悩ませることはできませんでした。