計算機科学のブログ

Haskell - コンテキストでの型の操作 - Functor型クラス - Functorはいつもそばにいる, List

入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)の UNIT5(コンテキストでの型の操作)、LESSON 27(Functor型クラス)、27.3(Functorはいつもそばにいる) クイックチェック 27-3の解答を求めてみる。

コード

sample3.hs

import qualified Data.Map as Map
main :: IO ()
main = do
    print allParts

data RobotPart = RobotPart {
    name :: String
    -- description :: String,
    -- cost :: Double,
    -- count :: Int 
} deriving Show

leftArm = RobotPart {name ="left arm"}
rightArm = RobotPart {name="right arm"}
robotHead = RobotPart {name = "robot head"}

partsDB :: Map.Map Int RobotPart
partsDB = Map.fromList $
    zip [1,2,3]
        [leftArm, rightArm, robotHead]
allParts :: [RobotPart]
allParts = snd <$> (Map.toList partsDB)

入出力結果(Terminal, Zsh)

% runghc sample3.hs
[RobotPart {name = "left arm"},RobotPart {name = "right arm"},RobotPart {name = "robot head"}]
%