From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 480CA7FD6C for ; Sat, 5 Dec 2015 04:57:10 +0100 (CET) IronPort-PHdr: 9a23:+J6LKxbzlnb3vmnVsKGT0ev/LSx+4OfEezUN459isYplN5qZpc+/bnLW6fgltlLVR4KTs6sC0LqI9fi4EUU7or+/81k6OKRWUBEEjchE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i760zceF13FOBZvIaytQ8iJ35rxj7j60qaQSjsLrQL1Wal1IhSyoFeZnegtqqwmFJwMzADUqGBDYeVcyDAgD1uSmxHh+pX4p8Y7oGwD884moppLWKD+OqA5VqBwDTI8Mmlz6te95jfZSg7awHIAXy04lQFUDhKNuBP8UJDqribgnuFmniKdJ8v7SbRyVDi/ufQ4ACT0gTsKYmZquFrcjdZ92fpW Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=jnfoster@cs.cornell.edu; spf=None smtp.mailfrom=jnfoster@cs.cornell.edu; spf=None smtp.helo=postmaster@exch-hub1.cs.cornell.edu Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of jnfoster@cs.cornell.edu) identity=pra; client-ip=128.253.49.13; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="jnfoster@cs.cornell.edu"; x-sender="jnfoster@cs.cornell.edu"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of jnfoster@cs.cornell.edu) identity=mailfrom; client-ip=128.253.49.13; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="jnfoster@cs.cornell.edu"; x-sender="jnfoster@cs.cornell.edu"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@exch-hub1.cs.cornell.edu) identity=helo; client-ip=128.253.49.13; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="jnfoster@cs.cornell.edu"; x-sender="postmaster@exch-hub1.cs.cornell.edu"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0DzAABzX2JWmQ0x/YBeFoJYgR8sQgaEZKkrAZEuIYVtgSJDEAEBAQEBAQEBEAEBAQEBCAsLByEugi2CIBF8NwIkEgEFASIbGogNDZ9BggiBMT4xi0iMS4Q/kFmCb4FEBY4fiEKFLYJyhR2BW4RDgyaPN4IlEiSBFziCPBYHgXRUAQGFbQEBAQ X-IPAS-Result: A0DzAABzX2JWmQ0x/YBeFoJYgR8sQgaEZKkrAZEuIYVtgSJDEAEBAQEBAQEBEAEBAQEBCAsLByEugi2CIBF8NwIkEgEFASIbGogNDZ9BggiBMT4xi0iMS4Q/kFmCb4FEBY4fiEKFLYJyhR2BW4RDgyaPN4IlEiSBFziCPBYHgXRUAQGFbQEBAQ X-IronPort-AV: E=Sophos;i="5.20,382,1444687200"; d="scan'208";a="190521821" Received: from outgoing-mail-1.cs.cornell.edu (HELO exch-hub1.cs.cornell.edu) ([128.253.49.13]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/RC4-MD5; 05 Dec 2015 04:57:08 +0100 Received: from mail-qk0-f180.google.com (209.85.220.180) by mail.cs.cornell.edu (128.253.49.15) with Microsoft SMTP Server (TLS) id 8.3.389.2; Fri, 4 Dec 2015 22:56:26 -0500 Received: by qkek142 with SMTP id k142so12115301qke.2 for ; Fri, 04 Dec 2015 19:57:06 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.55.49.197 with SMTP id x188mr23989226qkx.45.1449287826299; Fri, 04 Dec 2015 19:57:06 -0800 (PST) Received: by 10.55.49.12 with HTTP; Fri, 4 Dec 2015 19:57:06 -0800 (PST) Date: Fri, 4 Dec 2015 22:57:06 -0500 X-Gmail-Original-Message-ID: Message-ID: From: Nate Foster To: Content-Type: multipart/alternative; boundary="001a11490a2c10622005261e9eab" Subject: [Caml-list] [humor] OCaml hip-hop song --001a11490a2c10622005261e9eab Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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=E2=80=99m feeling greater Defer the value now and I return a little later Cuz I=E2=80=99m threaded, so for now I ain=E2=80=99t 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=E2=80=99s a burrito And I read it, I=E2=80=99m never defeated, bind and retrieve it with anonymous functions, so that I=E2=80=99m never gonna leave it behind And don=E2=80=99t worry, in case you haven=E2=80=99t heard I=E2=80=99m 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=E2=80=99t care, I=E2=80=99d be ambivalent It=E2=80=99s the same game, behavioral equivalence And I don=E2=80=99t even think that you was all that Your scheduler was so lonely it couldn=E2=80=99t ever get a callback And really that=E2=80=99s the kind of thing that you couldn=E2=80=99t handle Because my double semicolons got them screaming OH CAML Side effects, catch them all, now you know we got =E2=80=98em All up in UTOP but I started on the bottom So please take a second and just listen (listen) Up in your speakers I=E2=80=99m wishin to write a weaker precondition Took a few small steps, I was feeling like a dope Now I=E2=80=99m 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=E2=80=99s said I can=E2=80=99t take it back it=E2=80=99s immuta= ble And there was only one course plan Turning twenty-one, going on 3110 But really, at this moment, I=E2=80=99m 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=E2=80=99s not imperative scaring ya, and we ain=E2=80=99t 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 --001a11490a2c10622005261e9eab Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
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



Lyrics:
Take big steps to eval, like a nomad
Bind and ret= urn like a Monad
Got you looking so mad

about t= he signature I got you using
in the directory with the MLI files the com= piler was choosing

The type checks out, I=E2=80=99m feeling greater<= br>Defer the value now and I return a little later
Cuz I=E2=80=99m threa= ded, so for now I ain=E2=80=99t 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=E2=80=99s a burrito
And I read it, = I=E2=80=99m never defeated, bind and retrieve it
with anonymous function= s, so that I=E2=80=99m never gonna leave it behind

And don=E2=80=99t= worry, in case you haven=E2=80=99t heard
I=E2=80=99m bout to Ivar.read = it and put it up in a deferred
Or I could ref it and bang it for an immu= table copy
And just a little later, you can call me A$YNC ROCKY

T= ry to stop me, I wouldn=E2=80=99t care, I=E2=80=99d be ambivalent
It=E2= =80=99s the same game, behavioral equivalence
And I don=E2=80=99t even t= hink that you was all that
Your scheduler was so lonely it couldn=E2=80= =99t ever get a callback

And really that=E2=80=99s the kind of thing= that you couldn=E2=80=99t handle
Because my double semicolons got them = screaming OH CAML
Side effects, catch them all, now you know we got =E2= =80=98em
All up in UTOP but I started on the bottom

So please tak= e a second and just listen (listen)
Up in your speakers I=E2=80=99m wish= in to write a weaker precondition
Took a few small steps, I was feeling = like a dope
Now I=E2=80=99m up in OCaml, we using lexical scope

B= ut once again I need to try to understand this,
All these pedantic antic= s tripping up my semantics
I can stress, how much I really want to do it= all
But once it=E2=80=99s said I can=E2=80=99t take it back it=E2=80=99= s immutable

And there was only one course plan
Turning twenty-one= , going on 3110
But really, at this moment, I=E2=80=99m 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=E2=80=99s not imperative scaring = ya, and we ain=E2=80=99t tryna stunt
Just tryna process every single typ= e to keep it in check
And having higher-order fun with it is just a side= effect
--001a11490a2c10622005261e9eab--