I thought folks might enjoy hearing a new OCaml and Jane Street Async themed song by MC FloCaml (also known as Jared Wong), as performed in the final lecture of Michael Clarkson's CS 3110 class this semester at Cornell. Enjoy, -N Video (by Neel Kapse): http://www.cs.cornell.edu/~jnfoster/flocaml.mp4 Music (by Jared Wong): https://soundcloud.com/rangersbeats/flocaml Lyrics: Take big steps to eval, like a nomad Bind and return like a Monad Got you looking so mad about the signature I got you using in the directory with the MLI files the compiler was choosing The type checks out, I’m feeling greater Defer the value now and I return a little later Cuz I’m threaded, so for now I ain’t got much to say I put a semicolon on to throw the unit away At this point, I only know what you know that we know I fill up the Monad like it’s a burrito And I read it, I’m never defeated, bind and retrieve it with anonymous functions, so that I’m never gonna leave it behind And don’t worry, in case you haven’t heard I’m bout to Ivar.read it and put it up in a deferred Or I could ref it and bang it for an immutable copy And just a little later, you can call me A$YNC ROCKY Try to stop me, I wouldn’t care, I’d be ambivalent It’s the same game, behavioral equivalence And I don’t even think that you was all that Your scheduler was so lonely it couldn’t ever get a callback And really that’s the kind of thing that you couldn’t handle Because my double semicolons got them screaming OH CAML Side effects, catch them all, now you know we got ‘em All up in UTOP but I started on the bottom So please take a second and just listen (listen) Up in your speakers I’m wishin to write a weaker precondition Took a few small steps, I was feeling like a dope Now I’m up in OCaml, we using lexical scope But once again I need to try to understand this, All these pedantic antics tripping up my semantics I can stress, how much I really want to do it all But once it’s said I can’t take it back it’s immutable And there was only one course plan Turning twenty-one, going on 3110 But really, at this moment, I’m still living in terror Because the type checker be giving me compile time errors The C A M L, with an O at the front It’s not imperative scaring ya, and we ain’t tryna stunt Just tryna process every single type to keep it in check And having higher-order fun with it is just a side effect