0
import System.IO
import Data.Char
edastaNr n
   = do
      putStrLn "Anna rida:"
      line <- getLine
      if null line
         then return () 
         else do return length(line)

最後の行が間違っている理由と、それを修正する方法を誰か説明できますか? わかりません..エラーは次のとおりです。

Couldn't match expected type `IO ()' with actual type `[a0] -> Int'
4

1 に答える 1

4

括弧がありません。

...
else do return (length line)

ただし、タイプエラーもあります。あなたのedasaNr機能のタイプは何ですか?Int引数が与えられた場合、何らかの IO を実行して , を返す必要があります。

したがって、次のように記述したほうがよいでしょう。

edastaNr :: a -> IO Int
edastaNr n = do
    putStrLn "Anna rida:"
    line <- getLine
    if null line
     then return 0
     else return $ length line

nまた、引数を使用していないことも明らかになります (したがって、任意の型を持つことができます)。

于 2012-05-22T18:40:54.230 に答える