let assocs = [("hiratara",39),("shu1",0),("masaharu",32)]
do age <- lookup "honma" assocs <|> lookup "hiratara" assocs ①
guard $ age < 20 ②
return age
②が、分かりづらかった。
do age <- lookup "honma" assocs <|> lookup "hiratara" assocs ①
guard $ age < 20 ②
return age
②が、分かりづらかった。
guard True = pure () つまり Just ()
guard False= empty つまり Nothing
「do式でMaybeを使った場合、①や②のどの行であっても、Nothingが出たらそこでストップして、Nothingを返す(つまり全体の結果がNothing)。最後まで行けばJust ageですが。」
この「どの行であっても」がポイントになりそうです。これがあるからモナドが便利なんだろうと思いますが。この性質は、以前にも目にしていて、そのときは理解していたつもりでしたが、しばらくすると忘れてしまうようで、きちんとした言葉でメモしておくことも大事かもしれません。
0 件のコメント:
コメントを投稿