期待されるタイプ `IO() 'を実際のタイプ` a0-> m0a0'と一致させることができませんでした

ライアン

これが私のコードです:

doSomething :: IO Bool -> IO () -> IO ()
doSomething cond body = cond >>= ( \condition -> if condition then return else body )

それは私にこのエラーを与えます:

Couldn't match expected type `IO ()' with actual type `a0 -> m0 a0'
In the expression: return
In the expression: if condition then return else body
In the second argument of `(>>=)', namely
  `(\ condition -> if condition then return else body)'

私もこの同等の表記法を試しました:

whileM :: IO Bool -> IO () -> IO ()
whileM cond body = do
                     condition <- cond
                     if condition then return else body

しかし、私は多かれ少なかれ同じ表記を得ています。エラーは、関数がモナドを返すことを期待していることを示していることを理解していますが、代わりにa0モナドに変換する関数を返していますm a0どうすればこれを修正できますか?

jamshidh

(ほとんどすべての)他の言語とは異なり、Haskellでは、return「このコードを終了して、それを呼び出した次の行に戻る」という意味はありません。

Haskellでは、それは(大まかに)「これをモナドで包む」という意味です。do表記のコンテキストでは、これは、制御が「呼び出し元」に戻されるコード内の場所で発生することがよくあります(繰り返しますが、これは実際には正しい単語ではありませんが、この例えで実行されます)。

したがって、returnここにパラメーターが必要です(ラップするもの)...returnは型Monad m => a -> m aですが、関数は型を返しますIO ()したがって、まとめる必要があるのは、タイプ()つまり要素が1つしかないタイプ、「()」自体です。

に変更returnしてreturn ()、それが機能するかどうかを確認します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Haskellのソフトウェアトランザクショナルメモリ:期待されるタイプSTM a0を実際のタイプIOと一致させることができませんでした()

分類Dev

期待されるタイプ '(Int, Int)' を実際のタイプ '[t0]' と一致させることができませんでした

分類Dev

Haskell-タイプ「PersistEntityBackendrecord0」を「SqlBackend」と一致させることができませんでした

分類Dev

Haskellプログラミング割り当て、「期待される型「Int」を実際の型「[a0]-> Int」と一致させることができませんでした」およびその他のいくつかのエラー

分類Dev

期待される型「Int」を実際の型「m0Int」と一致させることができませんでした

分類Dev

期待される型「整数」を実際の型「m0整数」と一致させることができませんでした

分類Dev

Haskellは期待されるタイプ 'Bool'をタイプ[t0]に一致させることができません

分類Dev

期待される型 `Maybe(String、Int、String) 'を実際の型`([Char]、t0、[Char])'と一致させることができませんでした

分類Dev

Haskellは期待される型 '[(Char、b0)]'を実際の型 '(Char、Int)'と一致させることができませんでした

分類Dev

gtk2hs:予期されたタイプ 'IO [Int]'を実際のタイプ '[Int]'と一致させることができませんでした

分類Dev

予期されたタイプ 'IO [String]'を実際のタイプ '[String]'と一致させることができませんでした

分類Dev

Haskellタイプエラー「タイプ `Char 'と` t0 [Char]'を一致させることができませんでした」

分類Dev

「タイプ `Maybe 'と` IO'を一致させることができませんでした。期待されるタイプ:IO文字列実際のタイプ:Maybe文字列」Haskellで

分類Dev

Haskellで「期待されるタイプIOa0をintと一致させることができなかった」を修正する方法は?

分類Dev

Haskellはタイプ `[] 'を` IO'と一致させることができませんでした

分類Dev

Haskell-タイプ[]をIOと一致させることができませんでした

分類Dev

Haskell:エラー:タイプ「[]」を「IO」と一致させることができませんでした

分類Dev

Haskell readFile:期待されるタイプ '[String]'を実際のタイプ 'IOString'と一致させることができませんでした

分類Dev

期待されるタイプ `[a] 'を実際のタイプ` a'と一致させることができませんでした

分類Dev

Haskell:期待されるタイプ「a1」を実際のタイプ「a」と一致させることができませんでした

分類Dev

Haskellは期待されるタイプ「ItemNat」を実際のタイプ「()」と一致させることができませんでした

分類Dev

期待されるタイプ `[a1] 'を実際のタイプ`([a1]、[a1])'と一致させることができませんでした

分類Dev

haskellは期待されるタイプを実際のタイプ 'Bool'と一致させることができませんでした

分類Dev

期待されるタイプ「a」を実際のタイプ「[a]」と一致させることができませんでした

分類Dev

Haskell '期待されるタイプと実際のタイプを一致させることができませんでした'

分類Dev

期待されるタイプ「a」と実際のタイプ「Integer」を一致させることができませんでした

分類Dev

期待されるタイプ「Post」を実際のタイプ「RouteApp」と一致させることができませんでした

分類Dev

期待されるタイプ 'a-> Int'を実際のタイプ 'IOArrow StringInt'と一致させることができませんでした

分類Dev

予想されるタイプIOと一致しませんでした

Related 関連記事

  1. 1

    Haskellのソフトウェアトランザクショナルメモリ:期待されるタイプSTM a0を実際のタイプIOと一致させることができませんでした()

  2. 2

    期待されるタイプ '(Int, Int)' を実際のタイプ '[t0]' と一致させることができませんでした

  3. 3

    Haskell-タイプ「PersistEntityBackendrecord0」を「SqlBackend」と一致させることができませんでした

  4. 4

    Haskellプログラミング割り当て、「期待される型「Int」を実際の型「[a0]-> Int」と一致させることができませんでした」およびその他のいくつかのエラー

  5. 5

    期待される型「Int」を実際の型「m0Int」と一致させることができませんでした

  6. 6

    期待される型「整数」を実際の型「m0整数」と一致させることができませんでした

  7. 7

    Haskellは期待されるタイプ 'Bool'をタイプ[t0]に一致させることができません

  8. 8

    期待される型 `Maybe(String、Int、String) 'を実際の型`([Char]、t0、[Char])'と一致させることができませんでした

  9. 9

    Haskellは期待される型 '[(Char、b0)]'を実際の型 '(Char、Int)'と一致させることができませんでした

  10. 10

    gtk2hs:予期されたタイプ 'IO [Int]'を実際のタイプ '[Int]'と一致させることができませんでした

  11. 11

    予期されたタイプ 'IO [String]'を実際のタイプ '[String]'と一致させることができませんでした

  12. 12

    Haskellタイプエラー「タイプ `Char 'と` t0 [Char]'を一致させることができませんでした」

  13. 13

    「タイプ `Maybe 'と` IO'を一致させることができませんでした。期待されるタイプ:IO文字列実際のタイプ:Maybe文字列」Haskellで

  14. 14

    Haskellで「期待されるタイプIOa0をintと一致させることができなかった」を修正する方法は?

  15. 15

    Haskellはタイプ `[] 'を` IO'と一致させることができませんでした

  16. 16

    Haskell-タイプ[]をIOと一致させることができませんでした

  17. 17

    Haskell:エラー:タイプ「[]」を「IO」と一致させることができませんでした

  18. 18

    Haskell readFile:期待されるタイプ '[String]'を実際のタイプ 'IOString'と一致させることができませんでした

  19. 19

    期待されるタイプ `[a] 'を実際のタイプ` a'と一致させることができませんでした

  20. 20

    Haskell:期待されるタイプ「a1」を実際のタイプ「a」と一致させることができませんでした

  21. 21

    Haskellは期待されるタイプ「ItemNat」を実際のタイプ「()」と一致させることができませんでした

  22. 22

    期待されるタイプ `[a1] 'を実際のタイプ`([a1]、[a1])'と一致させることができませんでした

  23. 23

    haskellは期待されるタイプを実際のタイプ 'Bool'と一致させることができませんでした

  24. 24

    期待されるタイプ「a」を実際のタイプ「[a]」と一致させることができませんでした

  25. 25

    Haskell '期待されるタイプと実際のタイプを一致させることができませんでした'

  26. 26

    期待されるタイプ「a」と実際のタイプ「Integer」を一致させることができませんでした

  27. 27

    期待されるタイプ「Post」を実際のタイプ「RouteApp」と一致させることができませんでした

  28. 28

    期待されるタイプ 'a-> Int'を実際のタイプ 'IOArrow StringInt'と一致させることができませんでした

  29. 29

    予想されるタイプIOと一致しませんでした

ホットタグ

アーカイブ