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

MatejKr

Haskellは初めてです。エラーメッセージが表示されるのはなぜですか

(タイプ '[]'と 'IO' — Haskellを一致させることができませんでした)次のコードで。

主に、結果なしでアルゴリズムを実行する時間だけが必要です。

アルゴリズム時間のみを測定したい。

qsort1 :: Ord a => [a] -> [a]
qsort1 []     = []
qsort1 (p:xs) = qsort1 lesser ++ [p] ++ qsort1 greater
    where
        lesser  = [ y | y <- xs, y < p ]
        greater = [ y | y <- xs, y >= p ]

main = do
    start <- getCurrentTime
    qsort1 (take 1000000 $ randomRs (1, 100000) (mkStdGen 42))
    end <- getCurrentTime
    print (diffUTCTime end start) 
彼自身

あなたのmain機能は正しくありません。ない限り、qsort1あるIOアクションは、あなたはIOモナドでそれを実行することはできません。代わりに、それをletバインディングに入れることができます。

main = do
    start <- getCurrentTime
    let x = qsort1 (take 1000000 $ randomRs ((1 :: Int), 100000) (mkStdGen 42))
    end <- getCurrentTime
    print (diffUTCTime end start) 

また1、コンパイルエラーを回避するために、型アノテーションを明示的に指定していることにも注意してください

しかし、それでも、遅延評価のため、ソートにかかる合計時間を実際に見つけることはできません。xプログラムで使用されることはないため、計算されることはありません。を実行するとmain、明らかに間違っているこの出力が得られます。

λ> main
0.000001s

代わりに、これを使用して計算を計算できます。

main = do
    start <- getCurrentTime
    let x = qsort1 (take 1000000 $ randomRs ((1 :: Int), 100000) (mkStdGen 42))
    print x
    end <- getCurrentTime
    print (diffUTCTime end start)  

印刷する代わりに、BangPatterns拡張子を使用してqsort1の計算を強制することもできます

main = do
    start <- getCurrentTime
    let !x = qsort1 (take 1000000 $ randomRs ((1 :: Int), 100000) (mkStdGen 42))
    end <- getCurrentTime
    print (diffUTCTime end start)   

BangPatterns@kosmikusが指摘しているように、完全な評価にはつながりません。代わりにcriterion、ベンチマーク用に特別に作成されたようなライブラリを使用してください。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

Haskell-タイプ `(Int、Integer) 'を` Pos'と一致させることができませんでした

分類Dev

Haskell:タイプを一致させることができませんでしたか?

分類Dev

Haskell、Control.Lens:タイプ「[Language.Haskell.TH.Syntax.Dec]」を「Language.Haskell.TH.Syntax.Exp」と一致させることができませんでした

分類Dev

Haskell、Control.Lens:タイプ「[Language.Haskell.TH.Syntax.Dec]」を「Language.Haskell.TH.Syntax.Exp」と一致させることができませんでした

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

haskell-タイプ '(Char、Int)'と '[Char]'エラーを一致させることができませんでした

分類Dev

Haskell関数のタイプを一致させることができません

分類Dev

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

分類Dev

Haskell は型を一致させることができませんでした

分類Dev

Haskell-期待されるタイプと一致しませんでした

分類Dev

haskellでクラスタイプを特定のタイプと一致させることができません

分類Dev

Haskellは奇妙な予想されるタイプと一致できませんでした

分類Dev

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

分類Dev

Haskell howManyAboveAverageがタイプエラーと一致しませんでした

分類Dev

Haskellは期待される型floatを実際の型 'a'と一致させることができませんでした

分類Dev

Haskell:関数folde:期待される型「a」を実際の型「Expr」と一致させることができませんでした

分類Dev

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

分類Dev

Haskellはタイプと一致できません

分類Dev

Haskellタイプと一致できません

Related 関連記事

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

    Haskell-タイプ `(Int、Integer) 'を` Pos'と一致させることができませんでした

  6. 6

    Haskell:タイプを一致させることができませんでしたか?

  7. 7

    Haskell、Control.Lens:タイプ「[Language.Haskell.TH.Syntax.Dec]」を「Language.Haskell.TH.Syntax.Exp」と一致させることができませんでした

  8. 8

    Haskell、Control.Lens:タイプ「[Language.Haskell.TH.Syntax.Dec]」を「Language.Haskell.TH.Syntax.Exp」と一致させることができませんでした

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

    haskell-タイプ '(Char、Int)'と '[Char]'エラーを一致させることができませんでした

  17. 17

    Haskell関数のタイプを一致させることができません

  18. 18

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

  19. 19

    Haskell は型を一致させることができませんでした

  20. 20

    Haskell-期待されるタイプと一致しませんでした

  21. 21

    haskellでクラスタイプを特定のタイプと一致させることができません

  22. 22

    Haskellは奇妙な予想されるタイプと一致できませんでした

  23. 23

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

  24. 24

    Haskell howManyAboveAverageがタイプエラーと一致しませんでした

  25. 25

    Haskellは期待される型floatを実際の型 'a'と一致させることができませんでした

  26. 26

    Haskell:関数folde:期待される型「a」を実際の型「Expr」と一致させることができませんでした

  27. 27

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

  28. 28

    Haskellはタイプと一致できません

  29. 29

    Haskellタイプと一致できません

ホットタグ

アーカイブ