このプログラムで解析エラーの原因は何ですか?

AB

ここでの問題は何ですか?

module Main
    where

import System.IO

main = do
    hSetBuffering stdin LineBuffering
    numbers <- ask -- parse error on input `numbers'
    putStrLn "The sum of all numbers is:"
    putStrLn $ sum numbers
    putStrLn "The product of all numbers is:"
    putStrLn $ product numbers

ask :: (Read a, Eq a, Num a) => IO [a]
ask = do
    putStrLn "Enter a number to add it to the list. Enter zero to terminate the list."
    input <- getLine
    let n = read input
    if n == 0
    then return []
    else do
        rest <- ask 
        return (n : rest)
ジャスティンL。

の型シグネチャを見てみましょうputStrLn

> :t putStrLn
putStrLn :: String -> IO ()

ainにaskは明示的な型シグネチャがないため、Haskell / GHCはそれを使用するメソッドからそれを推測します。

したがって、メソッドがあるためputStrLn a、これが可能な唯一の方法は、の場合a :: Stringです。

ただし、の型シグネチャではsum

> :t sum
sum :: (Num a) => [a] -> a

aNumタイプクラスのインスタンスである必要がありますask関数もこれを指定します)。

GHCは、それ...a なければならないことを知ってStringますが、がsum必要Numです。String少なくとも前奏曲では、のインスタンスではありませんNum

ここに矛盾が現れます。

プログラムghc-modをチェックするようなプログラムを使用することをお勧めします。より役立つエラーメッセージが表示される場合があります。これが私が得たものです:

No instance for (Num String)

これは私たちが結論したこととよく一致しています。

この場合の解決策は、最初にあなたNumString:に変えることです。

> :t show
show :: (Show a) => a -> String

ために:

putStrLn $ show $ sum numbers

幸いなことに、printStrLn . showエイリアスはprint次のとおりです。

> :t print
print :: (Show a) => a -> IO ()

だからあなたは使うことができます

print $ sum numbers

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

このCプログラムのエラーは何ですか?

分類Dev

このFortranプログラムのエラーは何ですか?

分類Dev

Cプログラムでこのエラーの原因は何ですか(セグメンテーション違反(コアダンプ))?

分類Dev

次のプログラムのエラーは何ですか?

分類Dev

私のプログラムのエラーは何ですか?

分類Dev

このプログラムのセグメンテーション違反の原因は何ですか?

分類Dev

次のプログラムで実行時エラーが発生する原因は何ですか?

分類Dev

Ubuntu 19.10、ログインループエラーの原因は何ですか?

分類Dev

テレグラムボットでこの404エラーの原因は何ですか

分類Dev

Pascal-このランタイムエラー(216)の原因は何ですか?

分類Dev

Cプログラムの「異常なプログラム終了」エラーの考えられる原因は何ですか?

分類Dev

Pythonでこの属性エラーの原因は何ですか?

分類Dev

このプログラムがクラッシュする原因は何ですか?

分類Dev

このサンプルプログラムのインデントエラーは何ですか?

分類Dev

このサンプルプログラムのインデントエラーは何ですか?

分類Dev

私のcプログラムのこの奇妙なエラーは何ですか?

分類Dev

このサーバーエラーの原因は何ですか?

分類Dev

このプログラムの複雑さは何ですか

分類Dev

このUbuntuプログラムの名前は何ですか?

分類Dev

このプログラムの複雑さは何ですか?

分類Dev

このオブジェクト指向プログラムのエラーは何ですか?

分類Dev

エラーの原因は何ですか?

分類Dev

100%CPUであるgolangプログラムの原因は何ですか?

分類Dev

このプログラムの処理が遅くなる原因は何ですか?(C ++)

分類Dev

このActiveRecord :: ReadOnlyRecordエラーの原因は何ですか?

分類Dev

このPython構文エラーの原因は何ですか?

分類Dev

このbash構文エラーの原因は何ですか?

分類Dev

このBigQuery検索エラーの原因は何ですか?

分類Dev

このエラーの原因は何ですか?

Related 関連記事

  1. 1

    このCプログラムのエラーは何ですか?

  2. 2

    このFortranプログラムのエラーは何ですか?

  3. 3

    Cプログラムでこのエラーの原因は何ですか(セグメンテーション違反(コアダンプ))?

  4. 4

    次のプログラムのエラーは何ですか?

  5. 5

    私のプログラムのエラーは何ですか?

  6. 6

    このプログラムのセグメンテーション違反の原因は何ですか?

  7. 7

    次のプログラムで実行時エラーが発生する原因は何ですか?

  8. 8

    Ubuntu 19.10、ログインループエラーの原因は何ですか?

  9. 9

    テレグラムボットでこの404エラーの原因は何ですか

  10. 10

    Pascal-このランタイムエラー(216)の原因は何ですか?

  11. 11

    Cプログラムの「異常なプログラム終了」エラーの考えられる原因は何ですか?

  12. 12

    Pythonでこの属性エラーの原因は何ですか?

  13. 13

    このプログラムがクラッシュする原因は何ですか?

  14. 14

    このサンプルプログラムのインデントエラーは何ですか?

  15. 15

    このサンプルプログラムのインデントエラーは何ですか?

  16. 16

    私のcプログラムのこの奇妙なエラーは何ですか?

  17. 17

    このサーバーエラーの原因は何ですか?

  18. 18

    このプログラムの複雑さは何ですか

  19. 19

    このUbuntuプログラムの名前は何ですか?

  20. 20

    このプログラムの複雑さは何ですか?

  21. 21

    このオブジェクト指向プログラムのエラーは何ですか?

  22. 22

    エラーの原因は何ですか?

  23. 23

    100%CPUであるgolangプログラムの原因は何ですか?

  24. 24

    このプログラムの処理が遅くなる原因は何ですか?(C ++)

  25. 25

    このActiveRecord :: ReadOnlyRecordエラーの原因は何ですか?

  26. 26

    このPython構文エラーの原因は何ですか?

  27. 27

    このbash構文エラーの原因は何ですか?

  28. 28

    このBigQuery検索エラーの原因は何ですか?

  29. 29

    このエラーの原因は何ですか?

ホットタグ

アーカイブ