計算機科学のブログ

コンテキストでの型の操作 Monad型クラス ApplicativeとFunctorの制限 それほど単純ではないecho I/Oアクションを記述する

入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT5(コンテキストでの型の操作)、LESSON 30(Monad型クラス)、30.1(ApplicativeとFunctorの制限)、それほど単純ではないecho I/Oアクションを記述する、クイックチェック 30-1の解答を求めてみる。

IO String型ではMaybe String型のように関数の引数のパターンマッチで値を取得することができないから。

本lessonで使わないことにしてるdo表記を使えば可能。

do表記を使用した記述をしてみる。

コード

lesson/app/Main.hs

module Main (main) where

import Lib
  (
  )

echo :: IO ()
echo = do
  line <- getLine
  putStrLn line

main :: IO ()
main = echo

入出力結果(Terminal, Zsh)

% stack exec lesson-exe
Hello, world!
Hello, world!
%