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 615737FD6C for ; Sat, 5 Dec 2015 08:15:01 +0100 (CET) IronPort-PHdr: 9a23:xC0wHBWNS/nGIE6J1BNl+MzpmcDV8LGtZVwlr6E/grcLSJyIuqrYZhaAt8tkgFKBZ4jH8fUM07OQ6PC+HzRYqb+681k8M7V0HycfjssXmwFySOWkMmbcaMDQUiohAc5ZX0Vk9XzoeWJcGcL5ekGA6ibqtW1aJBzzOEJPK/jvHcaK1oLsh770o8WbSj4LrQT+SIs6FA+xowTVu5teqqpZAYF19CH0pGBVcf9d32JiKAHbtR/94sCt4MwrqHwI6Lpyv/JHBK7zeqB9Sb1DEBwnNXo07Yvlr0rtVwyKs1gRTGQQ2jFIDg6NuBL3QJb3mij3qOt70ymXO4v9SuZnCnyZ8653RUqw2288PDkj/TSPhw== Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=kevin@kevinchen.co; spf=None smtp.mailfrom=kevin@kevinchen.co; spf=None smtp.helo=postmaster@out4-smtp.messagingengine.com Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of kevin@kevinchen.co) identity=pra; client-ip=66.111.4.28; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="kevin@kevinchen.co"; x-sender="kevin@kevinchen.co"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of kevin@kevinchen.co) identity=mailfrom; client-ip=66.111.4.28; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="kevin@kevinchen.co"; x-sender="kevin@kevinchen.co"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@out4-smtp.messagingengine.com) identity=helo; client-ip=66.111.4.28; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="kevin@kevinchen.co"; x-sender="postmaster@out4-smtp.messagingengine.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0DRAABejmJWmxwEb0JdFoJYgR8sQr9FFwEJhW0CgSM8EAEBAQEBAQEBEAEBAQEBBgsLCSEugi2CCAEBBCMdOg8LGAICJgICLCuISA2uTHGEaYtxAQEBAQYBAQEBAQEBARUGgQGEWIV4hFkvgjUMLhMcgRWOJIhChS2CcoV6foRDgyaPN4NyOII8FgeBdCA0AQGFbQEBAQ X-IPAS-Result: A0DRAABejmJWmxwEb0JdFoJYgR8sQr9FFwEJhW0CgSM8EAEBAQEBAQEBEAEBAQEBBgsLCSEugi2CCAEBBCMdOg8LGAICJgICLCuISA2uTHGEaYtxAQEBAQYBAQEBAQEBARUGgQGEWIV4hFkvgjUMLhMcgRWOJIhChS2CcoV6foRDgyaPN4NyOII8FgeBdCA0AQGFbQEBAQ X-IronPort-AV: E=Sophos;i="5.20,383,1444687200"; d="scan'208,217";a="190534335" Received: from out4-smtp.messagingengine.com ([66.111.4.28]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Dec 2015 08:14:41 +0100 Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id CA57520483 for ; Sat, 5 Dec 2015 02:14:38 -0500 (EST) Received: from web3 ([10.202.2.213]) by compute6.internal (MEProxy); Sat, 05 Dec 2015 02:14:38 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=kevinchen.co; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-sasl-enc :x-sasl-enc; s=mesmtp; bh=ygf+EEvHlzG86V46+exXbpWhPOk=; b=UmPs7U FpwXnL9CbwqM+mIp6Y42kQTDDra4d8VB+k1CO+tBac6cSOVaOLLGT4j5WJLdBmhA axSPSzt9p7O+ZyhwW+XRKQDbsYmc4YE8sqTVHgHt/qKIBXh1cJeKp2MQ4xsPt74Z DsDlUA6fTY4JCk7dbd0kWXassBE/mWpb7V7vU= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-sasl-enc:x-sasl-enc; s=smtpout; bh=ygf+EEvHlzG86V4 6+exXbpWhPOk=; b=aGv9l6xGzZL+W3PSQefC1lytPpeKfBL8fsSbrnJIDYbwiku LijOKmnoyJ1xxdVtKXlXfe9A7GWmfjrFXMZJU8hxzUnv7Owaa9/DfiICYOwcfRGc bemyfO+j1Q2VU4xr25UE+iz9ofxLzKHoo5+SN3q6e8MbQc8jEAEO3SiuFTJc= Received: by web3.nyi.internal (Postfix, from userid 99) id 96041104E88; Sat, 5 Dec 2015 02:14:38 -0500 (EST) Message-Id: <1449299678.2433962.458685865.1FA45F58@webmail.messagingengine.com> X-Sasl-Enc: t6ug72hynAraRaLG1qY+1JhKu2+wB0Ub3okxGTqH4Oaz 1449299678 From: Kevin Chen To: caml-list@inria.fr MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: multipart/alternative; boundary="_----------=_144929967824339620"; charset="utf-8" X-Mailer: MessagingEngine.com Webmail Interface - ajax-5c8c9c89 Date: Sat, 05 Dec 2015 02:14:38 -0500 In-Reply-To: References: Subject: Re: [Caml-list] [humor] OCaml hip-hop song This is a multi-part message in MIME format. --_----------=_144929967824339620 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This rap is glorious. What's the story behind it -- was it a planned part of the lecture? -Kevin On Fri, Dec 4, 2015, at 10:57 PM, Nate Foster wrote: > 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):=C2=A0http://www.cs.cornell.edu/~jnfoster/flocaml.m= p4 > > Music (by Jared Wong):=C2=A0https://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=99= 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=E2=80=99s a burrito And I read it, I=E2=80=99m never defeat= ed, bind and > retrieve it with anonymous functions, so that I=E2=80=99m never gonna lea= ve > it behind > > And don=E2=80=99t worry, in case you haven=E2=80=99t heard I=E2=80=99m bo= ut 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 th= at > 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 han= dle 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 sco= pe > > 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 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 y= a, > 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 --_----------=_144929967824339620 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="utf-8"
This rap is glorious. What's the story behind it -- was it a pla= nned part of the lecture?
 
-Kevin
 
 
On Fri, Dec 4, 2015, at 10:57 PM, Nate Foster wrote:
I thought folks might enjoy hearing a new OCaml and Jan= e Street Async themed song by MC FloCaml (also known as Jared Wong), as per= formed in the final lecture of Michael Clarkson's CS 3110 class this semest= er at Cornell.
 
Enjoy,
-N
 
Video (by Neel Kapse): http://www.cs.cornell.edu/~jnfoster/flocaml.mp4
 
 
Lyrics:
Take big steps to eval, like a nomad
Bind an= d return like a Monad
Got you looking so mad

about the signature I got you using
in the director= y 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 la= ter
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 onl= y 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 i= t
with anonymous functions, so that I=E2=80=99m never gonna leave it beh= ind

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 r= ef 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 tha= t=E2=80=99s the kind of thing that you couldn=E2=80=99t handle
Because m= y 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 yo= ur 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 immutable

And there was only one cour= se 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 m= e 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-o= rder fun with it is just a side effect
 
--_----------=_144929967824339620--