CINXE.COM
ICFP 2021 - ICFP Programming Contest - ICFP 2021
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="https://icfp21.sigplan.org/favicon.ico?28d37e6d7e5e12d24c39bdba0f4f3cfd" rel="shortcut icon" type="image/x-icon" /> <link href="https://icfp21.sigplan.org/stylesheets/common_.css?d7bcca3579a066193caf560ede9d6399" rel="stylesheet" type="text/css" /> <title>ICFP 2021 - ICFP Programming Contest - ICFP 2021</title> <script type="text/javascript">var show_webdsl_debug=false;</script> <script type="text/javascript">var contextpath="https://icfp21.sigplan.org";</script> <link rel="stylesheet" href="https://icfp21.sigplan.org/stylesheets/bootstrap/css/bootstrap.min.css?7f89537eaf606bff49f5cc1a7c24dbca" type="text/css" /><link rel="stylesheet" href="https://icfp21.sigplan.org/stylesheets/conf.css?d8ff81ab1f2387936557f525e4e8eb20" type="text/css" /><link rel="stylesheet" href="https://icfp21.sigplan.org/getFile/ec57bc86-3f03-41e9-9f28-d06687e17fe2/logobar-with-logo.css?1626571774574" type="text/css" /><link rel="stylesheet" href="https://icfp21.sigplan.org/stylesheets/theme.bootstrap_3.min.css?6867e70881e6ed2c03b6c9cf9c3152e0" type="text/css" /><script type="text/javascript" src="//code.jquery.com/jquery-3.5.1.min.js"></script> <script type="text/javascript" src="https://icfp21.sigplan.org/javascript/jquery.tablesorter.combined.min.js?285b21976326641f8f1b910492e6d5d0"></script> <script type="text/javascript" src="https://icfp21.sigplan.org/javascript/jquery.tablesorter.pager.min.js?4551cdfea66f45a11ae5548f3d50a06f"></script> <script type="text/javascript" src="https://icfp21.sigplan.org/javascript/tablesorter-init.js?ee6babedf1a6be960e4543a1bb57b421"></script> <script type="text/javascript" src="https://icfp21.sigplan.org/javascript/bootstrap/js/bootstrap.min.js?2f34b630ffe30ba2ff2b91e3f3c322a1"></script> <script type="text/javascript" src="https://icfp21.sigplan.org/javascript/notify.min.js?e86d399917a84b69a4683f504c7a7813"></script> <script type="text/javascript" src="https://icfp21.sigplan.org/javascript/ajax.js?2dbd1cc4f8f2d52ae9c879d7346f4f8a"></script> <script type="text/javascript">$(document).ready( function(){ $('#program-menu a[data-fltr-type]').on('click', function(event){ event.preventDefault(); window.location = $(this).attr('href') + "?" + encodeURIComponent( $(this).data('fltr-type') ) + '=' + encodeURIComponent( $(this).data('fltr-val') ); }) }) </script> <script type="text/javascript">var ignoreHashChange = false; function hashChangeFunc(){ // show active tab on hash in url if (window.location.hash !== ''){ var hashTargetAll = $('a[href="' + window.location.hash + '"]'); if(hashTargetAll.length){ var hashTarget = hashTargetAll.filter('[data-toggle="tab"]') if( hashTarget.length ){ hashTarget = hashTarget.first(); hashTarget.tab('show'); } else { hashTarget = hashTargetAll.first(); } // and open parent tabs in case the target element is nested in a tab var parentPane = hashTarget.closest( '.tab-pane' ); if(parentPane.length){ $('.nav a[href="#'+ parentPane.attr('id') +'"]').tab('show'); } var parentCollapse = hashTarget.closest( '.panel-collapse:not(.in)' ).collapse('show'); } } return false; } $(document).ready(function(){ var tabFromRequestUrl = window.location.hash !== '' ? $('a[href="' + window.location.hash + '"][data-toggle="tab"]') : []; var initUrlHash = window.location.hash; hashChangeFunc() if( tabFromRequestUrl.length ){ //Prevent the browser to auto-scroll to the anchor of the tab window.location.hash = ""; } //make in-page #links open the tabs if ($._data( $(window)[0], 'events' ).hashchange == undefined){ $(window).on('hashchange', hashChangeFunc); } if(tabFromRequestUrl.length){ setTimeout( function(){ ignoreHashChange = true; history.replaceState(null, null, initUrlHash); ignoreHashChange = false; }, 10 ); } }); var autoTabFunction = function(node){ var isActivatingFirstTab = false; // remember the hash in the URL without jumping $('a[data-toggle="tab"]:not(.no-hash):not(.bound)').addClass('bound').on('shown.bs.tab', function(e){ if(!isActivatingFirstTab){ var newhash = '#' + $(e.target).attr('href').substr(1); if(history.replaceState){ history.replaceState(null, null, newhash); } else{ location.hash = newhash; } } }); //When no tab is active, set the first one to active $(node).find('.nav-tabs:not(.bound), .nav-pills:not(.bound)').addClass('bound').each(function(){ if( $(this).children().length > 0 && 1 > $(this).find('.active').length){ const firstItem = $(this).find('a[data-toggle="tab"]').first(); isActivatingFirstTab = true; firstItem.tab('show'); isActivatingFirstTab = false; } }); } </script> <script type="text/javascript">(function($){ $(document).ready(function(){ $('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) { event.preventDefault(); event.stopPropagation(); $(this).parent().siblings().removeClass('open'); $(this).parent().toggleClass('open'); }); }); })(jQuery); </script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-4G0QWEKVQS"></script> <script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'G-4G0QWEKVQS', {'cookie_domain': 'auto', 'anonymizeIp': true });gtag('config', 'UA-9607501-2', {'cookie_domain': 'auto', 'anonymizeIp': true });</script> <meta name='description' content='The ICFP Contest 2011 takes place 9-12 July 2021. All details will be announced through this website: https://icfpcontest2021.github.io.'> <meta prefix='og: http://ogp.me/ns#' property='og:description' content='The ICFP Contest 2011 takes place 9-12 July 2021. All details will be announced through this website: https://icfpcontest2021.github.io.'> <meta prefix='og: http://ogp.me/ns#' property='og:title' content='ICFP 2021 - ICFP Programming Contest - ICFP 2021'> <meta prefix='og: http://ogp.me/ns#' property='og:image' content='https://icfp21.sigplan.org/getImage/carousel/1+ICFP+2021.JPG?1613918806000'> <script type="text/javascript">function addEventModalLoadOnClick( containerNode ){ $(containerNode).find( "a[data-event-modal]" ).on("click", function(e){ var eventId = $(this).data("event-modal"); var modalElem = $("#modal-" + eventId); if(modalElem.length){ modalElem.modal({ backdrop: 'static', keyboard: true}, 'show'); } else { var loaderElem = $("#event-modal-loader"); loaderElem.find("input.event-id-input").val( eventId ); loaderElem.find("#load-modal-action").click(); } e.preventDefault(); } ); } </script><script type="text/javascript">function addStarredEventOnClick( containerNode ){ $(containerNode).find( "[data-event-star]" ).on("click", function(e){ var eventId = $(this).data("event-star"); var starEventFormElem = $("#event-star-form"); starEventFormElem.find("input.event-id-input").val( eventId ); starEventFormElem.find("#star-event-action").click(); e.preventDefault(); e.stopPropagation(); } ); } </script><script type="text/javascript">function pauseOnCloseModal( modalid ){ //pauses video (only youtube at the moment) when closing modal $('#' + modalid).on('hidden.bs.modal', function () { $(this).find('.embed-container iframe[src*=enablejsapi]').each( function(){ this.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*') } ); } ) } </script> </head> <body id="track"><div class="frame"><div class="logobar"><div class="container"><a href="https://icfp21.sigplan.org" class="navbar-brand navigate"><span class="brand-text">ICFP 2021</span></a><div class="place">Sun 22 - Sat 28 August 2021 <a href="https://icfp21.sigplan.org/venue/icfp-2021-venue" class="navigate"></a></div></div></div><div class="navbar navbar-default"><div class="container"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navigationbar" class="navbar-toggle"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button></div><div id="navigationbar" class="navigationbar collapse navbar-collapse"><ul class="block nav navbar-nav"><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Attending <span class="caret"></span></a><ul class="block dropdown-menu"><li class="block"><a href="https://icfp21.sigplan.org/venue/icfp-2021-venue" class="navigate">Venue: Virtual</a></li><li class="block"><a href="https://icfp21.sigplan.org/attending/students" class="navigate">Student Volunteers</a></li><li class="block"><a href="https://icfp21.sigplan.org/attending/code-of-conduct" class="navigate">Code of Conduct</a></li><li class="block"><a href="https://icfp21.sigplan.org/attending/call-for-sponsorship" class="navigate">Call For Sponsorship</a></li><li class="block"><a href="https://icfp21.sigplan.org/attending/Registration" class="navigate">Registration</a></li><li class="block"><a href="https://icfp21.sigplan.org/attending/accessibility" class="navigate">Accessibility</a></li></ul></li><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Program <span class="caret"></span></a><ul id="program-menu" class="block dropdown-menu"><li class="block"><a href="https://icfp21.sigplan.org/program/program-icfp-2021/" class="navigate">ICFP Program</a></li><li class="block"><a href="https://icfp21.sigplan.org/program/program-icfp-2021/" data-fltr-type="prog" data-fltr-val="Your Program" class="navigate"><span class="glyphicon glyphicon-star"></span> Your Program</a></li><li class="block divider"></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>Filter by Day</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://icfp21.sigplan.org/program/program-icfp-2021/" data-fltr-type="date" data-fltr-val="Sun 22 Aug 2021" class="navigate">Sun 22 Aug</a></li><li class="block"><a href="https://icfp21.sigplan.org/program/program-icfp-2021/" data-fltr-type="date" data-fltr-val="Mon 23 Aug 2021" class="navigate">Mon 23 Aug</a></li><li class="block"><a href="https://icfp21.sigplan.org/program/program-icfp-2021/" data-fltr-type="date" data-fltr-val="Tue 24 Aug 2021" class="navigate">Tue 24 Aug</a></li><li class="block"><a href="https://icfp21.sigplan.org/program/program-icfp-2021/" data-fltr-type="date" data-fltr-val="Wed 25 Aug 2021" class="navigate">Wed 25 Aug</a></li><li class="block"><a href="https://icfp21.sigplan.org/program/program-icfp-2021/" data-fltr-type="date" data-fltr-val="Thu 26 Aug 2021" class="navigate">Thu 26 Aug</a></li><li class="block"><a href="https://icfp21.sigplan.org/program/program-icfp-2021/" data-fltr-type="date" data-fltr-val="Fri 27 Aug 2021" class="navigate">Fri 27 Aug</a></li><li class="block"><a href="https://icfp21.sigplan.org/program/program-icfp-2021/" data-fltr-type="date" data-fltr-val="Sat 28 Aug 2021" class="navigate">Sat 28 Aug</a></li></ul></li></ul></li><li id="tracks-in-navbar" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Tracks <span class="caret"></span></a><ul class="block dropdown-menu multi-column columns-3"><div class="row"><div class="col-sm-5"><ul class="block multi-column-dropdown"><li class="block dropdown-header">ICFP 2021</li><li class="block"><a href="https://icfp21.sigplan.org/track/icfp-2021-jfp-talks" class="navigate">JFP Talks</a></li><li class="block"><a href="https://icfp21.sigplan.org/track/icfp-2021-pltea" class="navigate">PLTea</a></li><li class="block"><a href="https://icfp21.sigplan.org/track/icfp-2021-papers" class="navigate">Research Papers</a></li><li class="block"><a href="https://icfp21.sigplan.org/track/icfp-2021-social-events" class="navigate">Social Events</a></li><li class="block"><a href="https://icfp21.sigplan.org/track/icfp-2021-artifact-evaluation" class="navigate">Artifact Evaluation</a></li><li class="block"><a href="https://icfp21.sigplan.org/track/icfp-2021-student-research-competition" class="navigate">Student Research Competition</a></li><li class="block"><a href="https://icfp21.sigplan.org/track/icfp-2021-workshops" class="navigate">Workshops</a></li><li class="block"><a href="https://icfp21.sigplan.org/track/icfp-2021-tutorials" class="navigate">Tutorials</a></li><li class="block"><a href="https://icfp21.sigplan.org/track/icfp-2021-icfp-programming-contest" class="navigate">ICFP Programming Contest</a></li><li class="block"><a href="https://icfp21.sigplan.org/track/icfp-2021-student-volunteers" class="navigate">Student Volunteers</a></li></ul></div><div class="col-sm-7"><ul class="block multi-column-dropdown"><li class="block dropdown-header">Workshops</li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>Erlang</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://icfp21.sigplan.org/home/erlang-2021" class="navigate"><strong>Erlang</strong> </a></li><li class="block"><a href="https://icfp21.sigplan.org/details/erlang-2021-papers/7/Fifteen-Years-of-Successfully-Dialyzing-Erlang-and-Elixir-Code-Keynote-" class="small menu-advertised-event navigate">- Fifteen Years of Successfully Dialyzing Erlang and Elixir Code (Keynote)</a></li></ul></li><li class="block"><a href="https://icfp21.sigplan.org/home/farm-2021" class="navigate"><strong>FARM</strong> </a></li><li class="block"><a href="https://icfp21.sigplan.org/home/FHPNC-2021" class="navigate"><strong>FHPNC</strong> </a></li><li class="block"><a href="https://icfp21.sigplan.org/home/hiw-2021" class="navigate"><strong>HIW</strong> </a></li><li class="block"><a href="https://icfp21.sigplan.org/home/hope-2021" class="navigate"><strong>HOPE</strong> </a></li><li class="block"><a href="https://icfp21.sigplan.org/home/mlfamilyworkshop-2021" class="navigate"><strong>ML</strong> </a></li><li class="block"><a href="https://icfp21.sigplan.org/home/ocaml-2021" class="navigate"><strong>OCaml</strong> </a></li><li class="block"><a href="https://icfp21.sigplan.org/home/PLMW-ICFP-2021" class="navigate"><strong>PLMW @ ICFP</strong> </a></li><li class="block"><a href="https://icfp21.sigplan.org/home/scheme-2021" class="navigate"><strong>Scheme</strong> </a></li><li class="block"><a href="https://icfp21.sigplan.org/home/TyDe-2021" class="navigate"><strong>TyDe</strong> </a></li><li class="block"><a href="https://icfp21.sigplan.org/home/minikanren-2021" class="navigate"><strong>miniKanren</strong> </a></li><li class="block dropdown-header">Co-hosted Symposia</li><li class="block"><a href="https://icfp21.sigplan.org/home/haskellsymp-2021" class="navigate"><strong>Haskell</strong> </a></li></ul></div></div></ul></li><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Organization <span class="caret"></span></a><ul class="block dropdown-menu multi-column columns-2"><div class="row"><div class="col-sm-6"><ul class="block multi-column-dropdown"><li class="block dropdown-header">ICFP 2021 Committees</li><li class="block"><a href="https://icfp21.sigplan.org/committee/icfp-2021-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://icfp21.sigplan.org/committee/icfp-2021-steering-committee" class="navigate">Steering Committee</a></li><li class="block"><a href="https://icfp21.sigplan.org/committee/icfp-2021-virtualization-committee" class="navigate">Virtualization Committee</a></li><li class="block dropdown-header">Track Committees </li><li class="block"><a href="https://icfp21.sigplan.org/committee/icfp-2021-pltea-pltea-organization" class="navigate"><strong>PLTea</strong></a></li><li class="block"><a href="https://icfp21.sigplan.org/committee/icfp-2021-papers-program-committee" class="navigate"><strong>Research Papers</strong></a></li><li class="block"><a href="https://icfp21.sigplan.org/committee/icfp-2021-student-research-competition-program-committee" class="navigate"><strong>Student Research Competition</strong></a></li><li class="block"><a href="https://icfp21.sigplan.org/committee/icfp-2021-tutorials-selection-committee" class="navigate"><strong>Tutorials</strong></a></li><li class="block"><a href="https://icfp21.sigplan.org/committee/icfp-2021-student-volunteers-student-volunteers-committee" class="navigate"><strong>Student Volunteers</strong></a></li><li class="block dropdown-header">Contributors</li><li class="block"><a href="https://icfp21.sigplan.org/people-index" class="navigate"><span class="glyphicon glyphicon-search"></span><sup><span class="glyphicon glyphicon-user"></span></sup> People Index</a></li></ul></div><div class="col-sm-6"><ul class="block multi-column-dropdown"><li class="block dropdown-header">Workshops</li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>Erlang</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://icfp21.sigplan.org/committee/erlang-2021-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://icfp21.sigplan.org/committee/erlang-2021-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>FARM</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://icfp21.sigplan.org/committee/farm-2021-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://icfp21.sigplan.org/committee/farm-2021-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>FHPNC</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://icfp21.sigplan.org/committee/FHPNC-2021-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://icfp21.sigplan.org/committee/FHPNC-2021-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>HIW</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://icfp21.sigplan.org/committee/hiw-2021-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>HOPE</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://icfp21.sigplan.org/committee/hope-2021-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>ML</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://icfp21.sigplan.org/committee/mlfamilyworkshop-2021-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://icfp21.sigplan.org/committee/mlfamilyworkshop-2021-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>OCaml</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://icfp21.sigplan.org/committee/ocaml-2021-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://icfp21.sigplan.org/committee/ocaml-2021-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>PLMW @ ICFP</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://icfp21.sigplan.org/committee/PLMW-ICFP-2021-organizing-committee" class="navigate">Organizing Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>Scheme</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://icfp21.sigplan.org/committee/scheme-2021-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://icfp21.sigplan.org/committee/scheme-2021-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>TyDe</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://icfp21.sigplan.org/committee/tyde-2021-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>miniKanren</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://icfp21.sigplan.org/committee/minikanren-2021-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://icfp21.sigplan.org/committee/minikanren-2021-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="block dropdown-header">Co-hosted Symposia</li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>Haskell</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://icfp21.sigplan.org/committee/haskellsymp-2021-Haskell-2020-1-program-committee" class="navigate">Program Committee</a></li></ul></li></ul></div></div></ul></li><li class="block"><a href="https://icfp21.sigplan.org/search//all" class="navigate"><span class="glyphicon glyphicon-search"></span><span class="hidden-sm"> Search</span></a></li><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle"><span class="hidden-sm">Series <span class="caret"></span></span><span title="Series" class="visible-sm"><span class="glyphicon glyphicon-repeat"></span> <span class="caret"></span></span></a><ul class="block dropdown-menu"><li class="block"><a href="https://icfp21.sigplan.org/series/icfp" class="navigate"><span class="glyphicon glyphicon-home"></span> Series</a></li><li class="block divider"></li><li class="block"><a href="https://icfp25.sigplan.org" class="navigate">ICFP 2025</a></li><li class="block"><a href="https://icfp24.sigplan.org" class="navigate">ICFP 2024</a></li><li class="block"><a href="https://icfp23.sigplan.org" class="navigate">ICFP 2023</a></li><li class="block"><a href="https://icfp22.sigplan.org" class="navigate">ICFP 2022</a></li><li class="block"><span class="text-muted" style="margin-left: 2px;"><span class="glyphicon glyphicon-hand-right"></span> ICFP 2021</span></li><li class="block"><a href="https://icfp20.sigplan.org" class="navigate">ICFP 2020</a></li><li class="block"><a href="https://icfp19.sigplan.org" class="navigate">ICFP 2019</a></li><li class="block"><a href="https://icfp18.sigplan.org" class="navigate">ICFP 2018</a></li><li class="block"><a href="https://icfp17.sigplan.org" class="navigate">ICFP 2017</a></li><li class="block"><a href="https://icfp16.sigplan.org" class="navigate">ICFP 2016</a></li></ul></li></ul><div class="navbar-right"><ul class="block nav navbar-nav"><li class="block"><a href="https://conf.researchr.org/signin/icfp-2021/https%3A%5Es%5Esicfp21.sigplan.org%5Estrack%5Esicfp-2021-icfp-programming-contest" rel="nofollow" class="navigate">Sign in</a></li><li class="block"><a href="https://icfp21.sigplan.org/signup" class="navigate">Sign up</a></li></ul></div></div></div></div><div id="content" class="container"><div class="page-header"><span class="text-muted small"><span class="glyphicon glyphicon-home"></span> <a href="https://icfp21.sigplan.org" class="navigate">ICFP 2021</a> (<a href="https://icfp21.sigplan.org/series/icfp" class="navigate">series</a>) / </span><h1>ICFP Programming Contest</h1></div><div class="row"><div class="col-sm-12"><ul id="tab" class="nav nav-pills"><li><a href="#About" data-toggle="tab">About</a></li></ul><script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; autoTabFunction(node); }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script><div class="tab-content"><div id="About" class="tab-pane "><p>The ICFP Contest 2011 takes place 9-12 July 2021. All details will be announced through this website: <a href="https://icfpcontest2021.github.io">https://icfpcontest2021.github.io</a>.</p> </div></div></div><div class="col-sm-0 sidebar"></div></div><div id="messages-placeholder" class="alert alert-warning" style="display:none;"><a data-dismiss="alert" class="close">x</a><em>Tue 18 Feb 00:28</em></div></div><div id="notifications-ph" class="webdsl-placeholder"></div><div id="event-modal-loader" class="webdsl-placeholder"><form name="form_131600131703c411e65b13378d08eb1f6672b5a0259" id="form_131600131703c411e65b13378d08eb1f6672b5a0259" action="https://icfp21.sigplan.org/eventDetailsModalByAjaxConferenceEdition" accept-charset="UTF-8" method="POST" class="hidden"><input type="hidden" name="form_131600131703c411e65b13378d08eb1f6672b5a0259" value="1" /><input type="hidden" name="context" value="icfp-2021" /><input name="ae03f7f6f951d515a297b161e922205d" type="text" value="" class="inputString form-control event-id-input"/><button style="position: absolute; left: -9999px; width: 1px; height: 1px;" onclick='javascript:serverInvoke("https://icfp21.sigplan.org/eventDetailsModalByAjaxConferenceEdition","eventDetailsModalByAjaxConferenceEdition_ia0_3c411e65b13378d08eb1f6672b5a0259", [{"name":"context", "value":"icfp-2021"},],"form_131600131703c411e65b13378d08eb1f6672b5a0259", this.nextSibling, false,"event-modal-loader"); return false;'></button><a submitid="eventDetailsModalByAjaxConferenceEdition_ia0_3c411e65b13378d08eb1f6672b5a0259" href="javascript:void(0)" onclick="javascript:loadImageElem=this;$(this.previousSibling).click()" id="load-modal-action"></a></form></div><div id="event-star-form" class="webdsl-placeholder"><form name="form_509860938088b48fd14544d4239b498a2cf339e02b" id="form_509860938088b48fd14544d4239b498a2cf339e02b" action="https://icfp21.sigplan.org/eventStarByAjaxConferenceEdition" accept-charset="UTF-8" method="POST" class="hidden"><input type="hidden" name="form_509860938088b48fd14544d4239b498a2cf339e02b" value="1" /><input type="hidden" name="context" value="icfp-2021" /><input name="a0b55aa29cf9431a9461b359872014e3" type="text" value="" class="inputString form-control event-id-input"/><button style="position: absolute; left: -9999px; width: 1px; height: 1px;" onclick='javascript:serverInvoke("https://icfp21.sigplan.org/eventStarByAjaxConferenceEdition","eventStarByAjaxConferenceEdition_ia0_88b48fd14544d4239b498a2cf339e02b", [{"name":"context", "value":"icfp-2021"},],"form_509860938088b48fd14544d4239b498a2cf339e02b", this.nextSibling, false,"event-star-form"); return false;'></button><a submitid="eventStarByAjaxConferenceEdition_ia0_88b48fd14544d4239b498a2cf339e02b" href="javascript:void(0)" onclick="javascript:loadImageElem=this;$(this.previousSibling).click()" id="star-event-action"></a></form></div><div id="event-modals" class="webdsl-placeholder"></div><script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; addEventModalLoadOnClick(node); addStarredEventOnClick(node); }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script><footer class="footer"><div class="container"><div class="footer-box"><div class="row"><div class="col-sm-3"><h3><a href="https://icfp21.sigplan.org" class="navigate"><span class="glyphicon glyphicon-home"></span> ICFP 2021</a></h3><hr/>using <a href="https://conf.researchr.org" class="navigate">conf.researchr.org</a> (<a href="http://yellowgrass.org/roadmap/conf.researchr.org" class="navigate">v1.69.0</a>)<br/><small><a href="https://icfp21.sigplan.org/support" target="_blank" class="navigate"><span class="glyphicon glyphicon-question-sign"></span> Support page</a></small><br/><small></small></div><div class="col-sm-5"><div class="row"><div class="col-sm-6"><h4>Tracks</h4><a href="https://icfp21.sigplan.org/track/icfp-2021-jfp-talks" class="navigate">JFP Talks</a><br/><a href="https://icfp21.sigplan.org/track/icfp-2021-pltea" class="navigate">PLTea</a><br/><a href="https://icfp21.sigplan.org/track/icfp-2021-papers" class="navigate">Research Papers</a><br/><a href="https://icfp21.sigplan.org/track/icfp-2021-social-events" class="navigate">Social Events</a><br/><a href="https://icfp21.sigplan.org/track/icfp-2021-artifact-evaluation" class="navigate">Artifact Evaluation</a><br/><a href="https://icfp21.sigplan.org/track/icfp-2021-student-research-competition" class="navigate">Student Research Competition</a><br/><a href="https://icfp21.sigplan.org/track/icfp-2021-workshops" class="navigate">Workshops</a><br/><a href="https://icfp21.sigplan.org/track/icfp-2021-tutorials" class="navigate">Tutorials</a><br/><a href="https://icfp21.sigplan.org/track/icfp-2021-icfp-programming-contest" class="navigate">ICFP Programming Contest</a><br/><a href="https://icfp21.sigplan.org/track/icfp-2021-student-volunteers" class="navigate">Student Volunteers</a></div><div class="col-sm-6"><h4>Workshops</h4><a href="https://icfp21.sigplan.org/home/erlang-2021" class="navigate">Erlang 2021</a><br/><a href="https://icfp21.sigplan.org/home/farm-2021" class="navigate">FARM 2021</a><br/><a href="https://icfp21.sigplan.org/home/FHPNC-2021" class="navigate">FHPNC 2021</a><br/><a href="https://icfp21.sigplan.org/home/hiw-2021" class="navigate">HIW 2021</a><br/><a href="https://icfp21.sigplan.org/home/hope-2021" class="navigate">HOPE 2021</a><br/><a href="https://icfp21.sigplan.org/home/mlfamilyworkshop-2021" class="navigate">ML 2021</a><br/><a href="https://icfp21.sigplan.org/home/ocaml-2021" class="navigate">OCaml 2021</a><br/><a href="https://icfp21.sigplan.org/home/PLMW-ICFP-2021" class="navigate">PLMW @ ICFP 2021</a><br/><a href="https://icfp21.sigplan.org/home/scheme-2021" class="navigate">Scheme 2021</a><br/><a href="https://icfp21.sigplan.org/home/TyDe-2021" class="navigate">TyDe 2021</a><br/><a href="https://icfp21.sigplan.org/home/minikanren-2021" class="navigate">miniKanren 2021</a><br/><h4>Co-hosted Symposia</h4><a href="https://icfp21.sigplan.org/home/haskellsymp-2021" class="navigate">Haskell 2021</a></div></div></div><div class="col-sm-2"><h4>Attending</h4><a href="https://icfp21.sigplan.org/venue/icfp-2021-venue" class="navigate">Venue: Virtual</a><br><a href="https://icfp21.sigplan.org/attending/students" class="navigate">Student Volunteers</a><br><a href="https://icfp21.sigplan.org/attending/code-of-conduct" class="navigate">Code of Conduct</a><br><a href="https://icfp21.sigplan.org/attending/call-for-sponsorship" class="navigate">Call For Sponsorship</a><br><a href="https://icfp21.sigplan.org/attending/Registration" class="navigate">Registration</a><br><a href="https://icfp21.sigplan.org/attending/accessibility" class="navigate">Accessibility</a></div><div class="col-sm-2"><a href="https://icfp21.sigplan.org/signup" class="navigate">Sign Up</a></div></div></div></div></footer></div><script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; let defaultplacement = $(document).scrollLeft() > 100 ? 'auto left' : 'auto top'; $(node).find('[title]').each( function(i,el){ var $e=$(el);$e.tooltip({placement: function(tt, elem){ var attval = elem.getAttribute('data-placement'); return attval ? attval : defaultplacement; }, sanitize: false, container: 'body' }) } ).on('show.bs.tooltip', function () { let el = this; while (el && window.getComputedStyle(el).position !== 'fixed') { el = el.parentElement; } if(el) $(this).data('bs.tooltip').options.container = el;});$('.tooltip.fade.in, .ui-tooltip-content').remove(); }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script><script type="text/javascript">jQuery(document).ready(function($) { $(".clickable-row").click(function() { var href = $(this).attr("href"); if( window.location.href.indexOf( href ) < 0 ){ if ($(this).hasClass('new-window') ){ window.open( href ); } else { window.document.location = href; } } }); }); </script></body></html>