計算機科学のブログ

HaskellのI/O Hello World!:IO型の紹介 do表記

入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT4(HaskellのI/O)、LESSON21(Hello World!:IO型の紹介)、21.2(do表記)、クイックチェック 21-3の解答を求めてみる。

単純化することはできない。実際に確認。

コード

main :: IO ()
main = do
  putStrLn getLine

入出力結果(Terminal, Zsh)

% runghc sample03.hs

sample03.hs:3:12: error:
    • Couldn't match type ‘IO String’ with ‘[Char]’
      Expected type: String
        Actual type: IO String
    • In the first argument of ‘putStrLn’, namely ‘getLine’
      In a stmt of a 'do' block: putStrLn getLine
      In the expression: do putStrLn getLine
  |
3 |   putStrLn getLine
  |            ^^^^^^^
%