データ型のリストがあり、最初の値が存在する場合は、それに一致するものを見つけたいと思います。存在しない場合は、デフォルト値を返したいです。
data MyType = MyType String Int
findOrMake :: [MyType] -> String -> Int
findOrMake list x = do i <- -- find index
-- if i is a value, return the x[i]
-- if i is not a value, return (MyType x 0)
fmap
とを使うべき直感がありますfind
が、これまで使ったことがありません。