問題タブ [comonad]
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 - HaskellのComonad型クラスとは何ですか?
HaskellのComonad型クラスとは何ですか?comonadパッケージのControl.ComonadのComonadと同様です(Comonad型クラスを提供する他のパッケージの説明も歓迎します)。私は漠然とコモナドについて聞いたことがありますがextract :: w a -> a
、それについて私が本当に知っているのは、モナドと似たようなものを提供することだけですreturn :: a -> m a
。
「実際の」コードでのComonadの「実際の」使用に注目するためのボーナスポイント。
haskell - モナディックアクションから価値を引き出す方法
署名付きの組み込み関数はあります:: (Monad m) => m a -> a
か?
Hoogleは、そのような機能はないと言っています。
理由を説明できますか?
haskell - ストア コモナドとは何ですか?
Haskell の Comonad 型クラスが何であるかについてある程度の考えを持っているので、 Store comonad について聞いたことがあります。しかし、Control.Comonad.Store.Lazyを見ると、よくわかりません。どういう意味ですか?それはなんのためですか?State Monad の双対である Store = CoState と聞いたことがあります。どういう意味ですか?
math - Haskell で Cayley テーブルを実装するにはどうすればよいですか?
Cayley Tableを使用するためにいくつかの計算ツールを一般化することに興味があります。つまり、ルックアップ テーブル ベースの乗算演算です。
次のように最小限の実装を作成できます。
ただし、このアプローチには、ByteString
比較による実行時の型チェックから始めて、read
正しく動作させることができないという事実を含め、多くの問題があります。これを正しく行う方法はありますか?
IO を実行する場合を除いて、乗算を提供し、それらの型の一貫性を検証する型クラスを使用して、 newtypes CTElement1
、CTElement2
などのファミリを作成することを想像できます。Int
CTElement
ct_cayleytable
理想的には、おそらく のような暗黙のパラメーターを使用して、このポインターのコピーを 1 つだけ渡すためのトリックがあるかもしれません?cayleytable
が、これは互換性のない複数の Cayley テーブルではうまく機能せず、一般的に不快になります。
また、ベクトルへのインデックスはコモナドと見なすことができることもわかりました。最終的に実行時に行う場合でも、この種の型チェックをスムーズにするのに役立つベクトルまたは何かの素敵な comonad インスタンスはありますか?
scala - Scala での Comonad の例
Comonad とは何か、Scala 構文で記述できれば教えてください。scalazライブラリの実装を見つけましたが、それがどこで役立つかは明確ではありません。
haskell - Haskell cabal Reactive パッケージ エラー
Cabal で Reactive をインストールしようとすると、次のようになります。
thisによると、実際には comonad 依存関係はありません。ただし、PrimReactive.hsで Control.Comonad を使用します。
list - 理論的には、これはリストの有効な comonad インスタンスですか?
私はコモナドの概念を理解しようとしています。このブログ投稿を読んだ後、コモナドが何をするのか、モナドとどのように関係しているのかをしっかりと理解できたと思います。しかし、私はこの主題を少し掘り下げて、一般的なリスト型 (ご存知のように[a]
) の comonad インスタンスがどのように見えるかを考えてみようと思いました。正しい。
したがって、ブログ投稿で使用されたインスタンスを考えると、次のようになります。
のインスタンス宣言は次の[a]
ようになると思いました ( の構文[a]
はおそらく不可能か間違っていますが、ここでアイデアを得ることができます):
ここではsubsequences
、リストのすべてを見つけるだけですが、それを使用することは完全に実行可能powerset
です。の形式のリストにはいくつかの関数があり、(a -> [a])
どれが正しいかはあいまいです。
[a]
これは、comonad として適切にインスタンス化できないことを意味するのでしょうか、それとも、cojoin
実際に何を行うかを決定するのは単にユーザー次第なのでしょうか?
haskell - n次元グリッドタイプのcojoinまたはcobindの記述
タイプレベルのナチュラルの典型的な定義を使用して、n次元グリッドを定義しました。
今度はそれをコモナドのインスタンスにしたいのですが、脳を完全に包み込むことはできません。
n次元グリッドで使用cojoin
すると、n次元グリッドのn次元グリッドが生成されます。これと同じアイデアをインスタンスに提供したいと思います。つまり、(x、y、z)で結合されたグリッドの値は、(x、y、z)にフォーカスされた元のグリッドである必要があります。そのコードを適応させるには、 「fmaps」と「rolls」を実行するために具象化する必要があるようです。あなたはそのようにそれをする必要はありませんが、それが助けになるなら、あなたはそこに行きます。n
n
n
scala - Scala コマンド; コモンド法?
では、このコモナドのエンコーディング (以下を参照) を考えると、それより上のコモナドの法則は正しいのでしょうか? なんらかの理由で、彼らはそれらを見ているとは思いません。そこから間違って進むと悪い道しか生まれないことを知っているので、ナッジ、ヒント、ヘルプ、答えをいただければ幸いです。