計算機科学のブログ

コンテキストでの型の操作 リストモナドとリスト内包 リスト内包 do表記、抽象化

入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT5(コンテキストでの型の操作)、LESSON 32(リストモナドとリスト内包)、32.2(リスト内包)、クイックチェック 32-3の解答を求めてみる。

コード

lesson/app/Main.hs

module Main (main) where

import Data.Char (toUpper)
import Lib ()

xs :: [String]
xs = ["brown", "blue", "pink", "orange"]

main :: IO ()
main = do
  print xs
  print $
    [ mconcat
        [ "Mr. ",
          toUpper y : ys
        ]
      | (y : ys) <- xs
    ]

入出力結果(Terminal, Zsh)

% stack exec lesson-exe
["brown","blue","pink","orange"]
["Mr. Brown","Mr. Blue","Mr. Pink","Mr. Orange"]
%