計算機科学のブログ

コンテキストでの型の操作 リストモナドとリスト内包表記 リスト内包 大文字化、Data.Charモジュールj、toUpper関数

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

コード

import Data.Char

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

names = [mconcat ["Mr. ",
                  [toUpper x],
                  xs]
        | (x:xs) <- colors]

main :: IO ()
main = do
    print colors
    mapM_ print names

入出力結果(Terminal, Zsh)

% runghc sample03.hs
["brown","blue","pink","orange"]
"Mr. Brown"
"Mr. Blue"
"Mr. Pink"
"Mr. Orange"
%