問題タブ [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.
haskell - Applicative IO は Monad IO の関数に基づいて実装されていますか?
「Haskell を学ぼう!」著者は、インスタンスが次のように実装されていると主張していApplicative IO
ます。
私は間違っているかもしれませんが、 と の両方return
にdo
固有の構造 (いくつかの砂糖漬けの bind (>>=)
) は から来ているようMonad IO
です。それが正しいと仮定すると、私の実際の質問は次のとおりです。
実装が関数/コンビネータApplicative IO
に依存するのはなぜですか?Monad IO
Applicative
よりも強力な概念ではありませんMonad
か?
編集(いくつかの説明):
Typeclassopedia の記事によると、特定の型を作成するApplicative
前にその型である必要があるためMonad
(または理論上はそうあるべきである)、この実装は私の直感に反しています。
postfix-notation - Applicative Language は Postfix Notation を使用できますか?
Factor のような後置言語は、前置言語 (Lispy 言語) や中置/後置言語 (演算子と関数の両方を含めれば、すべて C スタイルの言語) よりもはるかに読みやすいことが常にわかっています。
プレフィックス言語とは異なり、どこにでも区切り記号は必要ありません。中置記法とは異なり、覚えておくべき複雑な優先順位はありません。好きではないものは何ですか?
これらの言語はすべて連結しているように見えるため、ほぼ常にスタックベースです。
連結よりも適用可能であり、依然として後置ベースである現代的な言語を実装できますか?
clojure - Clojureが関数を評価する方法を段階的に示す方法はありますか?
私は自分自身にClojureを教え始めたところです。私の研究を補足する一環として、関数型プログラミングのトピックに関するブライアン・ハーベイによるカリフォルニア大学バークレー校の講義をいくつか見ました。関数型プログラミングに関する2回目の講義では、34分頃に、applic関数を使用して評価の順序を示します。Clojureにはこれに似た機能がありますか?理由と理由を理解するために作業しているので、評価の順序を確認すると便利です。
haskell - 関手なしのApplicative
Image
私は基本的にフロートのC配列である型を持っています。map :: (Float -> Float) -> Image -> Image
、 、などの関数を簡単に作成できますzipWith :: (Float -> Float -> Float) -> Image -> Image -> Image
。
ただし、これらの関数の上にアプリケーション インスタンスのように見えるものを提供することも可能であり、 や のようなより柔軟なピクセル レベルの操作が可能になると感じてい((+) <$> image1 <*> image2)
ます((\x y z -> (x+y)/z) <$> i1 <*> i2 <*> i3)
。ただし、Image タイプには float 以外のものを含めることができないため、単純なアプローチは失敗し、fmap
そのように実装することはできません。
これはどのように実装できますか?
haskell - アプリカティブは構成するが、モナドは構成しない
アプリカティブは構成しますが、モナドは構成しません。
上記のステートメントはどういう意味ですか? そして、どちらが他のものよりも好ましいのはいつですか?
scala - 適用スタイルの実用的な使用法は何ですか?
私はScalaプログラマーで、Haskellを今学んでいます。デコレータ、戦略パターンなど、オブジェクト指向の概念の実際の使用例と実際の例を簡単に見つけることができます。本やインターウェブはそれでいっぱいです。
これはどういうわけか機能的な概念には当てはまらないことに気づきました。適切な例:Applicative。
Applicativeの実用的なユースケースを見つけるのに苦労しています。私がこれまでに出会ったほとんどすべてのチュートリアルと本は、との例を提供し[]
ますMaybe
。FPコミュニティで注目を集めているので、Applicativeはそれよりも適切であると期待していました。
私はApplicativeの概念的な基礎を理解していると思います(多分私は間違っています)、そして私は悟りの瞬間を長い間待っていました。しかし、それは起こっていないようです。プログラミングをしていると、「ユーレカ!ここでアプリが使える!」と喜んで叫ぶ瞬間がありました。(とを除い[]
てMaybe
)。
誰かが日常のプログラミングでApplicativeをどのように使用できるか教えてもらえますか?パターンを見つけ始めるにはどうすればよいですか?ありがとう!
haskell - Haskell-Control.Applicative.Alternativeは何に適していますか?
Haskellライブラリ内のクラスを見ていてApplicative
、偶然見つけましAlternative
た。
このクラスは何に適していますか?グーグル検索は特に洞察に満ちたものを明らかにしませんでした。そして、それは完全に場違いのようで、Applicativeパッケージにそのままバンドルされています。
誰かがあなたがこのクラスを使う可能性のあるシナリオを投稿してくれませんか?
haskell - Functor/Functor/Applicative/Monad ではない良い例?
型クラス X とは何かを誰かに説明しているときに、正確に X であるデータ構造の良い例を見つけるのに苦労しています。
そこで、次の例をリクエストします。
- Functor ではない型コンストラクター。
- Functor であるが Applicative ではない型コンストラクター。
- Applicative であるが Monad ではない型コンストラクター。
- モナドである型コンストラクタ。
Monad の例はいたるところにたくさんあると思いますが、Monad の良い例と前の例との関係があれば、全体像を完成させることができます。
特定の型クラスに属するために重要な側面のみが異なり、互いに類似している例を探します。
この階層のどこかに Arrow の例を忍び込ませることができれば (それは Applicative と Monad の間にありますか?)、それも素晴らしいことです!
scala - Nameをアプリケーションとして使用するにはどうすればよいですか?
Name
であるMonad
ため、これApplicative
もです。では、なぜこのコードが機能しないのですか?それを機能させるためにタイプアノテーションを付ける必要がありますか?ありがとう!