Skip to content

Instantly share code, notes, and snippets.

@yminsky
Created December 5, 2015 17:05
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yminsky/1645d897bc9128ed4450 to your computer and use it in GitHub Desktop.
Save yminsky/1645d897bc9128ed4450 to your computer and use it in GitHub Desktop.
Lyrics for OCaml/Async rap
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment