おそらく私はこれを間違った方法で行っていますが、HXTを使用して、HOpenGLの配列で使用するいくつかの頂点データを読み込んでいます。頂点配列は、newArrayを呼び出すことによって作成されるPtrである必要があります。残念ながら、newArrayはIO Ptrを返すので、Arrow内でどのように使用するかについてはわかりません。 IO a - > Arrow aと同様の型宣言が必要なのでしょうか?矢印内のIO Monadを呼び出す
6
A
答えて
5
タイプIO a -> Arrow a
は意味がありません。 Arrow
はタイプクラスであり、特定のタイプではありません。Monad
またはNum
とよく似ています。具体的には、Arrow
のインスタンスは、関数のように構成可能なものを記述する2つのパラメータを取り、型をエンドツーエンドで一致させる型コンストラクタです。したがって、IO a
を矢印に変換することは、おそらく概念的なタイプのエラーと呼ばれる可能性があります。
あなたは何をしようとしているのかよく分かりませんが、実際にIO
操作をArrow
の一部として使用したい場合は、それを含めるにはArrow
インスタンスが必要です。その最も簡単な形式は、のようなタイプの関数がすべてMonad
インスタンスに対して明白な方法で構成できることを観察することです。 hxt
パッケージには、より複雑なタイプを提供しているようだ:
newtype IOSLA s a b = IOSLA { runIOSLA :: s -> a -> IO (s, [b]) }
これはIO
のいくつかの混合物で、State
で、あなたはすべての3つのMonad
Sを経由して構成することができるように、上記のように関数に添付[]
モナド、各段階で。私は実際にhxt
をあまり使用していませんが、これらがArrow
であれば、任意のIO
関数を1つの役割を果たすように持ち上げるのはかなり簡単です - 状態値s
をそのまま渡して出力を回すだけです関数をシングルトンリストに変換します。あなたのためにこれを行う機能がすでにあるかもしれませんが、私は一見してそれを見ませんでした。
liftArrIO :: (a -> IO b) -> IOSLA s a b
liftArrIO f = IOSLA $ \s x -> fmap (\y -> (s, [y])) (f x)
関連する問題
- 1. Get Monad内のIO
- 2. 前へ戻る矢印内の矢印
- 3. haskeline内からネットワークIOを呼び出しています
- 4. State MonadはIOと非IOを混在させます
- 5. モーダル画像内の矢印
- 6. 変数内の矢印は?
- 7. ウィンドウ内の矢印キーを検出するUWP
- 8. linuxのnasmアセンブリでC IO関数を呼び出す
- 9. タグファイル内のJSPの呼び出しフラグメントと印刷変数
- 10. 矢印の中間点の矢印位置を変更する
- 11. Erlang - ioを呼び出すときにタイムアウトメッセージを受け取る:
- 12. setDisplayHomeAsUpEnabled()+上矢印?
- 13. MonadBaseControlからliftIOを呼び出す方法IO m?
- 14. 矢印プロット矢印のアスペクト比
- 15. 2つの入力を持つ矢印関数を持つArray.prototype.map()呼び出しの目的は何ですか?
- 16. 矢印キーのユニコード?
- 17. ファンシーボックス内の矢印の配置
- 18. pdfコンテンツのfancybox内のナビゲーション矢印
- 19. div内の左と右の矢印アイコン
- 20. uap5のsap.m.Panelコントロール内のShift矢印アイコン
- 21. なぜPerlのSUPER呼び出しで矢印メソッドを使用しないのですか?
- 22. Chromeページ内の検索矢印キーボードショートカット
- 23. Python Tkinter:ラベル内に矢印を描く
- 24. mainThread内で呼び出されたObserver.onNextの内部でIO操作を実行する方法
- 25. 戻る矢印を押すとonResume()が呼び出されます。詳細をご覧ください
- 26. なぜ矢印関数は本体の関数呼び出しを受け入れますか?
- 27. vbのリンクボタンを呼び出す(ユーザコントロール内で)JavaScriptのClickイベントを呼び出す
- 28. カスタムアンドロイドキーボードの上矢印と下矢印を定義する方法
- 29. HaskellはHom Functor/Monadとは何を呼びますか?
- 30. ポイントツーポイントの矢印
[ 'arrIO'](http://hackage.haskell.org/packages/archive/hxt/9.1.4/doc/html/:
基本的に、あなたはこのような何かをしたいと思いますControl-Arrow-ArrowIO.html#v:arrIO)が彼が探しているようだ。その実装は基本的にあなたのものと同じです。 – hammar
@ハマー:* Aha!*ありがとう、何らかの理由で、私はそれが名前に "持ち上げ"を持つだろうと思った。 –
ああ、はい、それは正確です!私が矢とモナドを持っていると思うたびに、私は彼らをもう一度考え直すことに気づきました... – John