計算機科学のブログ

HaskellのI/O Hello World!:IO型の紹介 IO型:不純な世界とやり取りする IOアクションの例 mainの型、getLineの型

入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT4(HaskellのI/O)、LESSON21(Hello World!:IO型の紹介)、21.1(IO型:不純な世界とやり取りする)、IOアクションの例、クイックチェック 21-2の解答を求めてみる。

OKではない。mainの型は「IO ()」で、getLineの型は「IO String」だから。

コード

main :: IO ()
main = do
  getLine

入出力結果(Terminal, Zsh)

% runghc sample02.hs 

sample02.hs:3:3: error:
    • Couldn't match type ‘[Char]’ with ‘()’
      Expected type: IO ()
        Actual type: IO String
    • In a stmt of a 'do' block: getLine
      In the expression: do getLine
      In an equation for ‘main’: main = do getLine
  |
3 |   getLine
  |   ^^^^^^^
%