1. 25
  1. 7

    the coup de gras!

    This translate to the blow of fat, which could be a valid pun in French. I think that you meant coup de grâce. :)

    1. 4

      coup de grâce

      Oof! Thank you, I fixed it. I’ll never turn down a chance to put hats on my vowels!

      1. 4

        It turns out actually what I meant is “pièce de résistance”. Apparently there’s something wrong with my brain’s hash table when resolving hash collisions in the “french phrase” bucket.

    2. 5

      This was great thank you. Very motivating examples which is different from most monad tutorials

      1. 4

        This post makes me want to give Haskell another try.

        1. 3

          Neat idea of using Writer to store undo actions.

          1. 1

            It would’ve been nice to see more of the do notation examples in whatever the other style is called. Bind style?

            1. 3

              There’s not too much of a difference, because in the bookMeeting examples the operations don’t depend on values from the previous operations. You just do >> at the end of every operation, which means “>>=, but ignore the result”

              So instead of

              bookMeeting participants room details = do
                addMeeting details (calendarOf room)
                for_ participants ((addMeeting details) . calendarOf)
                for_ participants ((sendEmail details) . emailOf)
              

              it is

              bookMeeting participants room details =
                (addMeeting details (calendarOf room)) >>
                (for_ participants ((addMeeting details) . calendarOf)) >>
                (for_ participants ((sendEmail details) . emailOf))
              
                1. 1

                  whatever the other style is called. Bind style?

                  Maybe “point-free style”?