計算機科学のブログ

Haskell - コンテキストでの型の操作 - リストモナドとリスト内包 - Data.CHar, toUpper関数

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

コード

sample3.hs

import Data.Char (toUpper)
main :: IO ()
main = do
  print xs
  print ys

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

ys :: [String]
ys = let f "" = ""
         f (x:xs) = toUpper x:xs
     in 
        [mconcat["Mr. ", t] | s <- xs, let t = f s] 

入出力結果(Terminal, Zsh)

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