Haskellを教えて、対価としてモンハンを買って貰ってきた

発端

ンゴ!?!?

アバウト

 今年のこの季節、やはり常々思うことは「SwitchのモンハンXX欲しい!」ということなので、 「Haskellを教えるので、Switchのモンハンください!」とつぶやいたら、 おキツネ美少女であるところのノエノエが「いいよ」と言ってくださったので、 某所にて密会してきました。

  • やった範囲
    • すごいH本(P.1〜P.33のうち、一部を飛ばして)
      • if, caseなどの構文はパターンマッチで代替できる場合が多いので、時間の都合上飛ばした
      • タプルもHaskellに限った概念でないので飛ばした
    • ことり、穂乃果と一緒に学ぶHaskell(入門)その1からその4(の内容)
      • 今回は代数的データ型を覚えて貰えればなと思っていた
      • これも「まずは代数的データ型を覚えて欲しい」と思って書いたものなので、内容的にちょうどよかったから引っ張り出した
    • リストMonad(リストFunctor, リストApplicative)
      • なんとはなしに「そういえばノエノエは、教えて欲しいところとかあったりする?」など聞いてみると
        • ノエノエがとても勢い良く「Monad!!」と言ってくれたので
          • リストMonadも内容に入れた

自己評価

 特にMonadについては教えるのが難しかった。

 まずはMonadが(Applicativeに加えて)joinを実現するような抽象だということに焦点を当てて、 >>=(モナドバインド)がmapfmap)とjoinの合成で構成できることを皮切りに、 リストのmapを一般化したものがfmapFunctor)だということを説明した。

 その次にApplicativeを教えたのだけど、pureはともかく <*>ap)がどのようなものか伝えるのが難しかった。

 また「なぜMonadはこのような形になっているのか?」という疑問を残してしまったみたいだけど、 こればっかりはこの時間では説明仕切る自身がなく、 断念した。

 Haskellの基盤……パターンマッチ含む、代数的データ型については ノエノエから疑問が出なかったので、 うまく教えられたかと思う。

その後

 キツネ美少女であるところのノエノエにニンテンドープリペードカード6000円分を買ってもらい、 サイゼリヤでミラノ風ドリアなどを一緒に食べた。

最後に

 このようなマジの機会を設けてのHaskell教えは初めてだったので テンポよくとは行きませんでしたが、 僕は今日もずっとモンハンXXをやっています。

筆者プロフィール

my-latest-logo

aiya000(あいや)

せつラボ 〜圏論の基本〜」 「せつラボ2~雲と天使と関手圏~」 「矢澤にこ先輩といっしょに代数!」を書いています!

強い静的型付けとテストを用いて、バグを防ぐのが好き。Haskell・TypeScript。