CINXE.COM

Academic Users of OCaml

<!DOCTYPE html> <html lang="en"> <head id="htmx-head"> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="description" content="OCaml is taught all around the world and used every day by programming language researchers. Learn more about the strong academic roots of the language."> <meta name="twitter:title" content="Academic Users of OCaml"> <meta name="twitter:description" content="OCaml is taught all around the world and used every day by programming language researchers. Learn more about the strong academic roots of the language."> <meta name="twitter:image" content="https://ocaml.org/_/MWIyY2ZmMWM5YzdkYWNmYWI4NGQ0MDBjOGFiZTYxOTg/ocaml_org_social_media.png"> <meta property="og:site_name" content="OCaml"> <meta property="og:type" content="object"> <meta property="og:title" content="Academic Users of OCaml"> <meta property="og:description" content="OCaml is taught all around the world and used every day by programming language researchers. Learn more about the strong academic roots of the language."> <meta name="og:image" content="https://ocaml.org/_/MWIyY2ZmMWM5YzdkYWNmYWI4NGQ0MDBjOGFiZTYxOTg/ocaml_org_social_media.png"> <meta name="theme-color" content="#fff" > <meta name="color-scheme" content="white"> <meta name="ahrefs-site-verification" content="6ff715b377cdcd566334b44ae8888791189ce24640c8a403eacdc3bcbaa9449b"> <link rel="canonical" href="https://ocaml.org/academic-users"> <link rel="icon" type="image/x-icon" href="/_/ZDJmMjgzN2NkZmJlMzgxNGQxMTMxNGVlMzk1NzZkN2I/favicon.ico"> <link rel="manifest" href="/manifest.json"> <link rel="stylesheet" href="/_/M2QzNTJkMGFlMzUxZDFkZDE4MDdjYzljNThkN2U1YjQ/css/main.css"> <link rel="stylesheet" href="/_/NmFjYjY5ZmIxYWRhMWQxMTQxODM4ZDEwYTgwMDcwNmI/vendors/font-files/inter.css"> <link rel="stylesheet" href="/_/YjM3OGY4YzIwN2E2ZmUxZTczOWVkNDQwZWRhMDU0MGM/vendors/font-files/roboto-mono.css"> <script defer src="/_/OWYyZDQyZjg4MTFlNWEzZjE4ZGY0YWM0OTU1NGEzYTI/vendors/alpine-clipboard.js"></script> <script defer src="/_/NGI1NjQzZjdkODY0MTY2MmViNThhM2VlZTYwMDk3NTI/vendors/alpine.min.js"></script> <script defer src="/_/YTNhODI2Yzg0Yzk4M2ZiNDcxYmRiYzdhY2FiN2Y0OWQ/vendors/htmx.min.js"></script> <script defer data-domain="ocaml.org" src="https://plausible.ci.dev/js/script.js"></script> <link rel="stylesheet" href="/_/YmM5NjJlN2E4YzVkMDBmMDQ2ODEwNTQyNTBkNzE2MmM/vendors/swiper-bundle.min.css"> <link rel="alternate" type="application/rss+xml" title="OCaml Planet Feed" href="/planet.xml"> <script src="/_/ZDJiMGNkNGMzMjBlYjNmZGUxNTMxOTAyNjA0MDU2N2Q/vendors/swiper-bundle.min.js"></script> <link rel="search" href="/opensearch.xml" type="application/opensearchdescription+xml" title="OCaml"> <title>Academic Users of OCaml</title> </head> <body> <script> if (localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches)) { document.body.classList.add("dark"); } else { document.body.classList.remove("dark"); } </script> <header class="h-20 flex items-center bg-sand dark:bg-dark-background_navigation" x-data="{ open: false }"> <nav class="container-fluid wide header flex justify-between items-center gap-5 xl:gap-8"> <ul class="order-0 space space-x-5 xl:space-x-8 items-center flex text-content font-medium dark:text-title dark:text-opacity-60 dark:font-semibold"> <li style="width:132px"> <a href="/" class="block pb-2"> <img src="/_/MDBjN2M4YjIxY2Y1YWExZWE3Njk4M2FiZTg1NWZjNTM/logo-with-name.svg" width="132" alt="OCaml logo" class="dark:hidden"> <img src="/_/MTE3YWE5YzJlZmExNmYyMmI3ZmEwYjliMDEwNDBkMDY/logo-with-name-white.svg" width="132" alt="OCaml logo" class="hidden dark:inline"> </a> </li> </ul> <ul class="order-2 hidden lg:flex items-center"> <li> <form x-data="{ row: null, col: 0, max: 0, total: 0 }" @submit="if (row !== null) { window.location = document.getElementById('package-autocomplete-'+row+'-'+col).getAttribute('href'); $event.stopPropagation(); $event.preventDefault(); return false }" action="/packages/search" method="GET"> <div class="dropdown-container flex items-center justify-center h-10 rounded-md focus-within:outline-primary_25 dark:focus-within:outline-dark-primary_40 focus-within:outline focus-within:outline-2 lg:w-56 xl:w-80" tabindex="0"> <label for="q" class="sr-only">Search OCaml packages</label> <input type="search" name="q" placeholder="Search OCaml packages" @keydown.escape="$event.target.blur()" class="bg-white dark:bg-dark-card text-title dark:text-dark-title h-full w-full font-normal focus:border-primary dark:focus:border-dark-primary focus:ring-0 border-primary dark:border-dark-primary rounded-md rounded-r-none px-3 py-1 placeholder-text-content dark:placeholder:text-dark-content appearance-none focus:outline-none" @keydown.stop @keyup.down="if (row === null) { row = 0; col = 0; } else { row +=1; if (row > max) { row = max } }" @keyup.up="if (row !== null) { row -=1; if (row < 0) { row = null } }" @keyup.right="if (col < 1) col++" @keyup.left="if (col >= 1) col--" :aria-activedescendant="row !== null ? 'package-autocomplete-'+row+'-'+col : null" hx-get="/packages/autocomplete" hx-params="q" hx-trigger="keyup changed, search" hx-target="#header-search-results" hx-indicator="#header-search-indicator" autocomplete="off" > <button aria-label="search" class="h-full flex items-center justify-center rounded-r-md bg-primary dark:bg-dark-primary text-white dark:text-dark-white px-4" type="submit" ><svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" /> </svg> </button> <div class="dropdown w-full lg:w-[32rem] xl:w-[32rem] z-10 absolute rounded-md mt-12 shadow-2xl top-1 p-2 bg-background dark:bg-dark-background shadow-3xl dark:outline dark:outline-1 dark:outline-primary"> <div id="header-search-results" aria-live="polite"></div> <a class="flex py-2 px-2 mx-2 gap-4 hover:bg-primary_nav_block_hover_10 dark:hover:bg-dark-primary_nav_block_hover_10 font-normal rounded-md text-primary dark:text-dark-primary" href="/api"> Standard Library API <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"></path> </svg> </a> </div> </div> </form> </li> </ul> <ul class="order-1 mr-auto items-center hidden lg:flex font-medium dark:text-white dark:text-opacity-60 dark:font-semibold"> <li><a href="/docs" class="block font-normal py-3 mg:py-4 px-1 lg:px-3 hover:text-primary dark:hover:text-dark-primary text-title dark:text-dark-title">Learn</a> </li> <li><a href="/tools" class="block font-normal py-3 mg:py-4 px-1 lg:px-3 hover:text-primary dark:hover:text-dark-primary text-title dark:text-dark-title">Tools</a> </li> <li><a href="/packages" class="block font-normal py-3 mg:py-4 px-1 lg:px-3 hover:text-primary dark:hover:text-dark-primary text-title dark:text-dark-title">Packages</a> </li> <li><a href="/community" class="block font-normal py-3 mg:py-4 px-1 lg:px-3 hover:text-primary dark:hover:text-dark-primary text-title dark:text-dark-title">Community</a> </li> <li><a href="/changelog" class="block font-normal py-3 mg:py-4 px-1 lg:px-3 hover:text-primary dark:hover:text-dark-primary text-title dark:text-dark-title">News</a> </li> <li><a href="/play" class="block font-normal py-3 mg:py-4 px-1 lg:px-3 hover:text-primary dark:hover:text-dark-primary text-title dark:text-dark-title">Play</a> </li> </ul> <ul class="order-3 hidden lg:flex items-center"> <li><a href="/docs/get-started" class="border border-primary dark:border-dark-primary text-primary dark:text-dark-primary font-bold py-2.5 px-7 whitespace-nowrap rounded">Get Started</a></li> </ul> <ul class="order-1 lg:hidden flex items-center"> <li class="h-12 w-12 hover:bg-primary_25 dark:hover:bg-primary_20 flex items-center justify-center rounded-full text-content dark:text-dark-title"> <button aria-label="open menu" @click="open = ! open"> <svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 10h16M4 14h16M4 18h16" /> </svg> </button> </li> </ul> </nav> <div class="bg-black fixed w-full h-full left-0 top-0 opacity-60 z-40" x-show='open' x-cloak></div> <nav class="z-50 h-full fixed right-0 top-0 max-w-full w-96 bg-background dark:bg-dark-background shadow-lg" x-show="open" x-cloak @click.away="open = false" x-transition:enter="transition duration-200 ease-out" x-transition:enter-start="translate-x-full" x-transition:leave="transition duration-100 ease-in" x-transition:leave-end="translate-x-full"> <ul class="text-content p-6 font-semibold"> <li class="flex justify-between items-center"> <a href="/"> <img src="/_/MDBjN2M4YjIxY2Y1YWExZWE3Njk4M2FiZTg1NWZjNTM/logo-with-name.svg" width="132" alt="OCaml logo" class="dark:hidden"> <img src="/_/MTE3YWE5YzJlZmExNmYyMmI3ZmEwYjliMDEwNDBkMDY/logo-with-name-white.svg" width="132" alt="OCaml logo" class="hidden dark:inline"> </a> <div class="" x-on:click="open = false"> <button aria-label="close" class="text-content dark:text-dark-title"> <svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" /> </svg> </button> </div> </li> <li class="mt-6 mb-3"> <form action="/packages/search" method="GET"> <div class="dropdown-container flex items-center justify-center h-10 rounded-md focus-within:outline-primary_25 dark:focus-within:outline-dark-primary_40 focus-within:outline focus-within:outline-2 " tabindex="0"> <label for="q" class="sr-only">Search OCaml packages</label> <input type="search" name="q" placeholder="Search OCaml packages" @keydown.escape="$event.target.blur()" class="bg-white dark:bg-dark-card text-title dark:text-dark-title h-full w-full font-normal focus:border-primary dark:focus:border-dark-primary focus:ring-0 border-primary dark:border-dark-primary rounded-md rounded-r-none px-3 py-1 placeholder-text-content dark:placeholder:text-dark-content appearance-none focus:outline-none" > <button aria-label="search" class="h-full flex items-center justify-center rounded-r-md bg-primary dark:bg-dark-primary text-white dark:text-dark-white px-4" type="submit" ><svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" /> </svg> </button> </div> </form> </li> <li><a href="/docs" class="block font-normal py-3 mg:py-4 px-1 lg:px-3 hover:text-primary dark:hover:text-dark-primaryblock text-title dark:text-dark-title">Learn</a> </li> <li><a href="/tools" class="block font-normal py-3 mg:py-4 px-1 lg:px-3 hover:text-primary dark:hover:text-dark-primaryblock text-title dark:text-dark-title">Tools</a> </li> <li><a href="/packages" class="block font-normal py-3 mg:py-4 px-1 lg:px-3 hover:text-primary dark:hover:text-dark-primaryblock text-title dark:text-dark-title">Packages</a> </li> <li><a href="/community" class="block font-normal py-3 mg:py-4 px-1 lg:px-3 hover:text-primary dark:hover:text-dark-primaryblock text-title dark:text-dark-title">Community</a> </li> <li><a href="/changelog" class="block font-normal py-3 mg:py-4 px-1 lg:px-3 hover:text-primary dark:hover:text-dark-primaryblock text-title dark:text-dark-title">News</a> </li> <li><a href="/play" class="block font-normal py-3 mg:py-4 px-1 lg:px-3 hover:text-primary dark:hover:text-dark-primaryblock text-title dark:text-dark-title">Play</a> </li> <li> <a href="/api" class="flex py-3 px-1 gap-4 font-semibold text-primary dark:text-dark-primary">Standard Library API<svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"></path> </svg> </a> </li> <li class="mt-3 mb-6"> <a href="/docs/get-started" class="w-full rounded font-normal py-3 px-7 flex items-center justify-center bg-primary dark:bg-dark-primary text-white dark:text-dark-title">Get started</a> </li> <li> <div class="space-x-6 text-2xl flex items-center"> <a aria-label="OCaml's Discord" href="https://discord.gg/cCYQbqN" class="opacity-60 hover:opacity-100 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary"> <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"> <path fill-rule="evenodd" d="M18.9419 5.29661C17.6473 4.69088 16.263 4.25066 14.8157 4C14.638 4.32134 14.4304 4.75355 14.2872 5.09738C12.7487 4.86601 11.2245 4.86601 9.7143 5.09738C9.57116 4.75355 9.3588 4.32134 9.17947 4C7.73067 4.25066 6.3448 4.6925 5.05016 5.29982C2.43887 9.24582 1.73099 13.0938 2.08493 16.8872C3.81688 18.1805 5.49534 18.9662 7.14548 19.4804C7.55291 18.9196 7.91628 18.3235 8.22931 17.6953C7.63313 17.4688 7.06211 17.1892 6.52256 16.8647C6.6657 16.7586 6.80571 16.6478 6.94098 16.5337C10.2318 18.0729 13.8074 18.0729 17.0589 16.5337C17.1958 16.6478 17.3358 16.7586 17.4774 16.8647C16.9362 17.1908 16.3637 17.4704 15.7675 17.697C16.0805 18.3235 16.4423 18.9212 16.8513 19.4819C18.503 18.9678 20.183 18.1822 21.915 16.8872C22.3303 12.4897 21.2056 8.67705 18.9419 5.29661ZM8.67765 14.5543C7.68977 14.5543 6.87963 13.632 6.87963 12.509C6.87963 11.3859 7.67247 10.4621 8.67765 10.4621C9.68285 10.4621 10.493 11.3843 10.4757 12.509C10.4772 13.632 9.68285 14.5543 8.67765 14.5543ZM15.3223 14.5543C14.3344 14.5543 13.5243 13.632 13.5243 12.509C13.5243 11.3859 14.3171 10.4621 15.3223 10.4621C16.3275 10.4621 17.1376 11.3843 17.1203 12.509C17.1203 13.632 16.3275 14.5543 15.3223 14.5543Z" clip-rule="evenodd" /> </svg> </a> <a aria-label="The OCaml Compiler on GitHub" href="https://github.com/ocaml/ocaml" class="opacity-60 hover:opacity-100 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary"> <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"> <path fill-rule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clip-rule="evenodd" /> </svg> </a> <a aria-label="The OCaml Language Twitter Account" href="https://twitter.com/ocaml_org" class="opacity-60 hover:opacity-100 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary"> <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"> <path d="M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84" /> </svg> </a> </div> </li> </ul> </nav> </header> <script> window.addEventListener('keydown', function(event) { if (event.key === "/") { event.preventDefault(); document.querySelector("input[type='search']").focus() } }) </script> <main class="bg-background dark:bg-dark-background"><div class="w-full border-b bg-[#DDEAFC] dark:bg-[#101B3F] md:bg-transparent dark:border-none md:bg-[length:100%_100%] md:bg-[url('/img/academic/academic-hero-background.svg')] dark:md:bg-[url('/img/academic/academic-hero-background-dark.svg')]"> <div class="container-fluid py-2 md:py-4 md:flex md:gap-20"> <div class="w-full py-6 md:py-20 bg-contain bg-right-bottom bg-no-repeat md:bg-[url('/img/academic/map.svg')]"> <div class="md:flex-grow"> <h1 class="text-title dark:text-dark-title tracking-wider font-bold text-4xl lg:text-5xl">OCaml in <br class="hidden lg:block"> Teaching & Research </h1> <p class="text-content dark:text-dark-content my-6 max-w-md text-xl"> With its deep mathematical roots, OCaml has has always had strong ties to academia. It is taught in universities around the world, and has accrued an ever growing body of research. </p> </div> </div> </div> </div> <div class="w-full bg-background dark:dark-section-navigation py-8 border-b border-separator_20 dark:border-separator_30"> <div class="container-fluid"> <p class="font-bold dark:text-dark-title text-2xl">Top Universities Teach OCaml</p> <div class="flex flex-col w-full" x-data="{swiper: null, activeIndex: 0}" x-init="swiper = new Swiper('#institutionSwiper', {loop: true,slidesPerView: 1,spaceBetween: 10,autoHeight: true,autoplay: false,pagination: { el: `#institutionSwiper .swiper-pagination`, clickable: true, type: 'bullets',bulletActiveClass: 'swiper-bullet-active',bulletClass: 'swiper-bullet'}});swiper.on('slideChange', function (swiper) { activeIndex=swiper.realIndex })"> <div class="hidden lg:grid grid-cols-5 w-full dark:gap-4 lg:mb-10"> <button @click="swiper.slideTo((1))" class="group flex items-center py-4 border-b" :class="activeIndex === (0) ? 'border-primary dark:border-transparent' : 'border-transparent hover:border-primary dark:hover:border-transparent'" > <div class="px-8 flex items-center justify-center dark:rounded-lg dark:bg-white dark:border-b-4 border-r" :class="activeIndex === (0) ? 'dark:border-b-primary' : 'dark:hover:border-b-primary dark:border-b-transparent'" > <img :class="activeIndex === (0)? 'block' : 'hidden group-hover:block'" class="w-full" src='/media/_/MDczMGVjYzdiODQ2Y2FlY2NlMDMwOTVkMTdiOTdjYTc/academic_institution/featured/cornell.png' alt="" /> <img :class="activeIndex === (0)? 'hidden' : 'group-hover:hidden'" class="w-full" src='/media/_/NGM1Zjg2OTJmZDgyYzFjMjI1Y2JiY2Q5MTVmZDQzNjg/academic_institution/featured/uncolored/cornell.png' alt="" /> </div> </button> <button @click="swiper.slideTo((2))" class="group flex items-center py-4 border-b" :class="activeIndex === (1) ? 'border-primary dark:border-transparent' : 'border-transparent hover:border-primary dark:hover:border-transparent'" > <div class="px-8 flex items-center justify-center dark:rounded-lg dark:bg-white dark:border-b-4 border-r" :class="activeIndex === (1) ? 'dark:border-b-primary' : 'dark:hover:border-b-primary dark:border-b-transparent'" > <img :class="activeIndex === (1)? 'block' : 'hidden group-hover:block'" class="w-full" src='/media/_/YTA1NmU2Y2FmYjEwZWRjZTA1OGU1MTljMTNmNzA5OGU/academic_institution/featured/san_diego.png' alt="" /> <img :class="activeIndex === (1)? 'hidden' : 'group-hover:hidden'" class="w-full" src='/media/_/ZmM4YTc1ODNkMjI2MmE3ZjQxNjNkZDY3YjBhMDk4MmI/academic_institution/featured/uncolored/san_diego.png' alt="" /> </div> </button> <button @click="swiper.slideTo((3))" class="group flex items-center py-4 border-b" :class="activeIndex === (2) ? 'border-primary dark:border-transparent' : 'border-transparent hover:border-primary dark:hover:border-transparent'" > <div class="px-8 flex items-center justify-center dark:rounded-lg dark:bg-white dark:border-b-4 border-r" :class="activeIndex === (2) ? 'dark:border-b-primary' : 'dark:hover:border-b-primary dark:border-b-transparent'" > <img :class="activeIndex === (2)? 'block' : 'hidden group-hover:block'" class="w-full" src='/media/_/OWM5MTZkNTgwZDAxYTFjYzc3NjZmYmNjOTk4MzBhOWM/academic_institution/featured/paris_diderot.png' alt="" /> <img :class="activeIndex === (2)? 'hidden' : 'group-hover:hidden'" class="w-full" src='/media/_/NGFmZGEzODAwNjk2ODhjOTk0MjY2NjEwMjBkYjRhMjQ/academic_institution/featured/uncolored/paris_diderot.png' alt="" /> </div> </button> <button @click="swiper.slideTo((4))" class="group flex items-center py-4 border-b" :class="activeIndex === (3) ? 'border-primary dark:border-transparent' : 'border-transparent hover:border-primary dark:hover:border-transparent'" > <div class="px-8 flex items-center justify-center dark:rounded-lg dark:bg-white dark:border-b-4 border-r" :class="activeIndex === (3) ? 'dark:border-b-primary' : 'dark:hover:border-b-primary dark:border-b-transparent'" > <img :class="activeIndex === (3)? 'block' : 'hidden group-hover:block'" class="w-full" src='/media/_/ZmQ1YjFkODMwMDBiOThjYjlkYWNlOGVjMWU5YjYwY2Q/academic_institution/featured/harvard.png' alt="" /> <img :class="activeIndex === (3)? 'hidden' : 'group-hover:hidden'" class="w-full" src='/media/_/ZTczMDVkYjcwMjJhYzdmZTBmYTM0ZWYxNTNkM2E4NGQ/academic_institution/featured/uncolored/harvard.png' alt="" /> </div> </button> <button @click="swiper.slideTo((5))" class="group flex items-center py-4 border-b" :class="activeIndex === (4) ? 'border-primary dark:border-transparent' : 'border-transparent hover:border-primary dark:hover:border-transparent'" > <div class="px-8 flex items-center justify-center dark:rounded-lg dark:bg-white dark:border-b-4 " :class="activeIndex === (4) ? 'dark:border-b-primary' : 'dark:hover:border-b-primary dark:border-b-transparent'" > <img :class="activeIndex === (4)? 'block' : 'hidden group-hover:block'" class="w-full" src='/media/_/OGNlZTNkMDUyNDc5MDBkY2UzZjYyYTIxYjIzZjM3OWI/academic_institution/featured/cambridge.png' alt="" /> <img :class="activeIndex === (4)? 'hidden' : 'group-hover:hidden'" class="w-full" src='/media/_/NjE4OWNjMzYwMTc1NTU5MTRhZmExOTQ0ZTBlNTk0MTM/academic_institution/featured/uncolored/cambridge.png' alt="" /> </div> </button> </div> <div id="institutionSwiper" class="swiper-container relative overflow-hidden"> <button class="items-center justify-center w-[40px] h-[40px] rounded-full bg-separator_20 dark:bg-dark-separator_30 flex lg:hidden absolute top-[50%] left-0 z-20" @click="swiper.slidePrev()"> <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 text-white dark:text-dark-white" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M15.75 19.5L8.25 12l7.5-7.5" /> </svg> </button> <button class="items-center justify-center w-[40px] h-[40px] rounded-full bg-separator_20 dark:bg-dark-separator_30 flex lg:hidden absolute top-[50%] right-0 z-20" @click="swiper.slideNext()"> <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 text-white dark:text-dark-white" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5" /> </svg> </button> <div class="swiper-wrapper"> <div class="flex flex-col lg:flex-row lg:gap-8 justify-between swiper-slide"> <div class="lg:hidden w-full flex justify-center p-8 dark:bg-white dark:rounded-lg dark:my-8 dark:w-[70%] dark:self-center"> <img class="w-3/4" src="/media/_/MDczMGVjYzdiODQ2Y2FlY2NlMDMwOTVkMTdiOTdjYTc/academic_institution/featured/cornell.png" alt=""> </div> <div class="flex flex-col gap-2 max-w-48 mx-auto"> <p class="text-title dark:text-dark-title text-lg">Cornell University</p> <p class="text-base text-content dark:text-dark-content my-4">Cornell University is a private, statutory, Ivy League and land-grant research university in Ithaca, New York. </p> <div class="flex flex-wrap gap-2"> <a class="flex gap-2 text-primary dark:text-dark-white hover:dark:text-dark-primary dark:underline hover:underline " href="https://www.cs.cornell.edu/courses/cs3110/"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" class="h-5 w-5 text-primary dark:text-dark-white" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="size-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" /> </svg> Data Structures and Functional Programming </a> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-9 ">Lecture Notes</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-6 hidden">Exercises</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-11 ">Video Recordings</p> </div> </div> <div class="hidden lg:flex w-[60%] rounded-lg h-[380px] overflow-hidden"> <img class="w-full" src="/media/_/MDdlMTY4MTE0YjM0NGFjNmQ3MWFmOGI1NGI2Y2NlYjk/academic_institution/featured/images/cornell.png" alt="Cornell University"> </div> </div> <div class="flex flex-col lg:flex-row lg:gap-8 justify-between swiper-slide"> <div class="lg:hidden w-full flex justify-center p-8 dark:bg-white dark:rounded-lg dark:my-8 dark:w-[70%] dark:self-center"> <img class="w-3/4" src="/media/_/YTA1NmU2Y2FmYjEwZWRjZTA1OGU1MTljMTNmNzA5OGU/academic_institution/featured/san_diego.png" alt=""> </div> <div class="flex flex-col gap-2 max-w-48 mx-auto"> <p class="text-title dark:text-dark-title text-lg">University of California, San Diego</p> <p class="text-base text-content dark:text-dark-content my-4">The University of California, San Diego(UC San Diego or, colloquially, UCSD) is a public land-grant research university in San Diego, California. </p> <div class="flex flex-wrap gap-2"> <a class="flex gap-2 text-primary dark:text-dark-white hover:dark:text-dark-primary dark:underline hover:underline " href="https://cseweb.ucsd.edu/classes/wi14/cse130-a/"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" class="h-5 w-5 text-primary dark:text-dark-white" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="size-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" /> </svg> Programming Languages Principles and Paradigms (along with Python and Prolog) </a> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-9 ">Lecture Notes</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-6 ">Exercises</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-11 hidden">Video Recordings</p> </div> </div> <div class="hidden lg:flex w-[60%] rounded-lg h-[380px] overflow-hidden"> <img class="w-full" src="/media/_/NDIxM2E1ZjM2ZTNmMzQ3N2Q3MWM1OWUwOTZjYTZjYzE/academic_institution/featured/images/san_diego.png" alt="University of California, San Diego"> </div> </div> <div class="flex flex-col lg:flex-row lg:gap-8 justify-between swiper-slide"> <div class="lg:hidden w-full flex justify-center p-8 dark:bg-white dark:rounded-lg dark:my-8 dark:w-[70%] dark:self-center"> <img class="w-3/4" src="/media/_/OWM5MTZkNTgwZDAxYTFjYzc3NjZmYmNjOTk4MzBhOWM/academic_institution/featured/paris_diderot.png" alt=""> </div> <div class="flex flex-col gap-2 max-w-48 mx-auto"> <p class="text-title dark:text-dark-title text-lg">Universit茅 Paris Cit茅</p> <p class="text-base text-content dark:text-dark-content my-4">Universit茅 Paris Cit茅 is a multidisciplinary research university in Paris, France, known for its strong emphasis on innovation, international collaboration, and a broad range of academic programs across sciences, humanities, and social sciences. </p> <div class="flex flex-wrap gap-2"> <a class="flex gap-2 text-primary dark:text-dark-white hover:dark:text-dark-primary dark:underline hover:underline " href="https://www.informatique.univ-paris-diderot.fr/formations/licences/ue/l1/ipf1"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" class="h-5 w-5 text-primary dark:text-dark-white" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="size-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" /> </svg> Introduction to Functional Programming </a> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-9 hidden">Lecture Notes</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-6 hidden">Exercises</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-11 hidden">Video Recordings</p> </div> <div class="flex flex-wrap gap-2"> <a class="flex gap-2 text-primary dark:text-dark-white hover:dark:text-dark-primary dark:underline hover:underline " href="https://www.informatique.univ-paris-diderot.fr/formations/licences/ue/l1/pfw2"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" class="h-5 w-5 text-primary dark:text-dark-white" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="size-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" /> </svg> Functional Programming for the Web </a> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-9 hidden">Lecture Notes</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-6 hidden">Exercises</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-11 hidden">Video Recordings</p> </div> <div class="flex flex-wrap gap-2"> <a class="flex gap-2 text-primary dark:text-dark-white hover:dark:text-dark-primary dark:underline hover:underline " href="https://www.informatique.univ-paris-diderot.fr/formations/licences/ue/l3/pf5"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" class="h-5 w-5 text-primary dark:text-dark-white" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="size-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" /> </svg> Functional Programming </a> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-9 hidden">Lecture Notes</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-6 hidden">Exercises</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-11 hidden">Video Recordings</p> </div> <div class="flex flex-wrap gap-2"> <a class="flex gap-2 text-primary dark:text-dark-white hover:dark:text-dark-primary dark:underline hover:underline " href="https://www.irif.fr/~haberm/cours/mv/"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" class="h-5 w-5 text-primary dark:text-dark-white" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="size-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" /> </svg> Virtual Machines </a> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-9 ">Lecture Notes</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-6 hidden">Exercises</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-11 hidden">Video Recordings</p> </div> <div class="flex flex-wrap gap-2"> <a class="flex gap-2 text-primary dark:text-dark-white hover:dark:text-dark-primary dark:underline hover:underline " href="https://www.informatique.univ-paris-diderot.fr/formations/masters/ue/m1/com7"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" class="h-5 w-5 text-primary dark:text-dark-white" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="size-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" /> </svg> Compilation </a> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-9 hidden">Lecture Notes</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-6 hidden">Exercises</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-11 hidden">Video Recordings</p> </div> <div class="flex flex-wrap gap-2"> <a class="flex gap-2 text-primary dark:text-dark-white hover:dark:text-dark-primary dark:underline hover:underline " href="https://www.informatique.univ-paris-diderot.fr/formations/masters/ue/m2/astat10"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" class="h-5 w-5 text-primary dark:text-dark-white" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="size-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" /> </svg> Static Analysis </a> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-9 hidden">Lecture Notes</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-6 hidden">Exercises</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-11 hidden">Video Recordings</p> </div> <div class="flex flex-wrap gap-2"> <a class="flex gap-2 text-primary dark:text-dark-white hover:dark:text-dark-primary dark:underline hover:underline " href="https://usr.lmf.cnrs.fr/~kn/pfa_en.html"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" class="h-5 w-5 text-primary dark:text-dark-white" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="size-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" /> </svg> Advanced Functional Programming </a> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-9 ">Lecture Notes</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-6 hidden">Exercises</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-11 hidden">Video Recordings</p> </div> <div class="flex flex-wrap gap-2"> <a class="flex gap-2 text-primary dark:text-dark-white hover:dark:text-dark-primary dark:underline hover:underline " href="https://www.dicosmo.org/CourseNotes/pfav/"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" class="h-5 w-5 text-primary dark:text-dark-white" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="size-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" /> </svg> Advanced Functional Programming </a> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-9 ">Lecture Notes</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-6 hidden">Exercises</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-11 hidden">Video Recordings</p> </div> </div> <div class="hidden lg:flex w-[60%] rounded-lg h-[380px] overflow-hidden"> <img class="w-full" src="/media/_/YzMyYThiZDM2MTQyNzBiOGNjY2Y5MGFjZTliNzY4ZmM/academic_institution/featured/images/paris_diderot.png" alt="Universit茅 Paris Cit茅"> </div> </div> <div class="flex flex-col lg:flex-row lg:gap-8 justify-between swiper-slide"> <div class="lg:hidden w-full flex justify-center p-8 dark:bg-white dark:rounded-lg dark:my-8 dark:w-[70%] dark:self-center"> <img class="w-3/4" src="/media/_/ZmQ1YjFkODMwMDBiOThjYjlkYWNlOGVjMWU5YjYwY2Q/academic_institution/featured/harvard.png" alt=""> </div> <div class="flex flex-col gap-2 max-w-48 mx-auto"> <p class="text-title dark:text-dark-title text-lg">Harvard University</p> <p class="text-base text-content dark:text-dark-content my-4">Harvard University is a private Ivy League research university in Cambridge, Massachusetts. higher education academy. </p> <div class="flex flex-wrap gap-2"> <a class="flex gap-2 text-primary dark:text-dark-white hover:dark:text-dark-primary dark:underline hover:underline " href="https://canvas.harvard.edu/courses/124796"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" class="h-5 w-5 text-primary dark:text-dark-white" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="size-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" /> </svg> Principles of Programming Language Compilation </a> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-9 ">Lecture Notes</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-6 hidden">Exercises</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-11 ">Video Recordings</p> </div> <div class="flex flex-wrap gap-2"> <a class="flex gap-2 text-primary dark:text-dark-white hover:dark:text-dark-primary dark:underline hover:underline " href="https://cs51.io/"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" class="h-5 w-5 text-primary dark:text-dark-white" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="size-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" /> </svg> Introduction to Computer Science II- Abstraction &amp; Design </a> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-9 hidden">Lecture Notes</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-6 hidden">Exercises</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-11 hidden">Video Recordings</p> </div> </div> <div class="hidden lg:flex w-[60%] rounded-lg h-[380px] overflow-hidden"> <img class="w-full" src="/media/_/Y2NiOTQ0MjVlNjg2MGE3ZmVlYTJjZDBjOTgxNzhlMDA/academic_institution/featured/images/harvard.png" alt="Harvard University"> </div> </div> <div class="flex flex-col lg:flex-row lg:gap-8 justify-between swiper-slide"> <div class="lg:hidden w-full flex justify-center p-8 dark:bg-white dark:rounded-lg dark:my-8 dark:w-[70%] dark:self-center"> <img class="w-3/4" src="/media/_/OGNlZTNkMDUyNDc5MDBkY2UzZjYyYTIxYjIzZjM3OWI/academic_institution/featured/cambridge.png" alt=""> </div> <div class="flex flex-col gap-2 max-w-48 mx-auto"> <p class="text-title dark:text-dark-title text-lg">University of Cambridge</p> <p class="text-base text-content dark:text-dark-content my-4">The University of Cambridge is a collegiate research university in Cambridge, United Kingdom. </p> <div class="flex flex-wrap gap-2"> <a class="flex gap-2 text-primary dark:text-dark-white hover:dark:text-dark-primary dark:underline hover:underline " href="https://www.cl.cam.ac.uk/teaching/2425/FoundsCS/materials.html"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" class="h-5 w-5 text-primary dark:text-dark-white" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="size-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" /> </svg> Foundations of Computer Science </a> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-9 ">Lecture Notes</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-6 hidden">Exercises</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-11 hidden">Video Recordings</p> </div> <div class="flex flex-wrap gap-2"> <a class="flex gap-2 text-primary dark:text-dark-white hover:dark:text-dark-primary dark:underline hover:underline " href="https://www.cl.cam.ac.uk/teaching/1415/L28/"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" class="h-5 w-5 text-primary dark:text-dark-white" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="size-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" /> </svg> Advanced Functional Programming </a> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-9 hidden">Lecture Notes</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-6 hidden">Exercises</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-11 hidden">Video Recordings</p> </div> </div> <div class="hidden lg:flex w-[60%] rounded-lg h-[380px] overflow-hidden"> <img class="w-full" src="/media/_/ZDY3ODIwNGM5MWVmMzRjMDA2ZWExNDVkMGY3MDc3YzA/academic_institution/featured/images/cambridge.png" alt="University of Cambridge"> </div> </div> </div> </div> </div> </div> </div> <div class="py-16 bg-sand dark:dark-deep-blue-gradient border-b border-separator_20 dark:border-dark-separator_30"> <div class="container-fluid"> <div class="flex flex-col justify-center items-center"> <h1 class="m-0 font-sans font-bold tracking-normal leading-8 capitalize lg:tracking-tight text-2xl text-title dark:text-dark-title text-center"> Many more academic institutions teach OCaml! </h1> <div class="flex items-center justify-center mt-4 w-full md:max-w-max"> <a href="/academic-users/institutions" class="h-11 border w-full min-w-max border-primary dark:border-dark-primary text-base items-center justify-center inline-flex py-1 px-4 bg-white dark:bg-dark-background rounded-md text-primary dark:text-dark-primary hover:text-white hover:dark:text-white hover:bg-primary hover:dark:bg-dark-primary md:text-lg cursor-pointer"> View All Institutions </a> </div> </div> </div> </div> <div class="w-full bg-white dark:dark-section-navigation py-8 border-b border-separator_20 dark:border-separator_30"> <div class="container-fluid"> <p class="text-title dark:text-dark-title text-2xl font-bold mb-2">Course Materials from Top Universities</p> <p class="text-content dark:text-dark-content mb-2">Discover lecture notes and exercises from OCaml curriculums all around the world</p> <div class="grid grid-cols-1 pb-8 lg:grid-cols-3 gap-8 mt-6"> <a href="https://www.cl.cam.ac.uk/teaching/2425/FoundsCS/materials.html" class="flex flex-col bg-[#00000003] card dark:dark-card rounded-lg border border-separator_30 p-5 flex flex-col gap-2"> <p class="text-xl text-title dark:text-dark-title">Foundations of Computer Science</p> <div class="flex flex-wrap gap-2"> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-9 ">Lecture Notes</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-6 hidden">Exercises</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-11 hidden">Video Recordings</p> </div> <div class="flex items-center mt-auto"> <svg xmlns="http://www.w3.org/2000/svg" width="23" height="19" viewBox="0 0 23 19" fill="none" class="h-6 w-6 text-primary dark:text-dark-primary group-hover:text-primary group-hover:text-dark-primary max-w-[7%]"> <path d="M3.659 7.44843C3.38395 9.55401 3.22005 11.6726 3.168 13.7954C6.0468 14.9979 8.80318 16.4748 11.399 18.2054C13.9951 16.4747 16.7519 14.9979 19.631 13.7954C19.5789 11.6726 19.415 9.55401 19.14 7.44843M19.14 7.44843C20.015 7.15443 20.902 6.88243 21.798 6.63443C18.5346 4.34668 15.051 2.39032 11.399 0.794434C7.74699 2.39066 4.2634 4.34735 1 6.63543C1.89327 6.88206 2.77961 7.15316 3.658 7.44843C6.32662 8.34564 8.9159 9.46351 11.399 10.7904C13.8817 9.46349 16.4717 8.34563 19.14 7.44843ZM6.149 12.3014C6.34791 12.3014 6.53868 12.2224 6.67933 12.0818C6.81998 11.9411 6.899 11.7503 6.899 11.5514C6.899 11.3525 6.81998 11.1618 6.67933 11.0211C6.53868 10.8805 6.34791 10.8014 6.149 10.8014C5.95009 10.8014 5.75932 10.8805 5.61867 11.0211C5.47802 11.1618 5.399 11.3525 5.399 11.5514C5.399 11.7503 5.47802 11.9411 5.61867 12.0818C5.75932 12.2224 5.95009 12.3014 6.149 12.3014ZM6.149 12.3014V8.62643C7.84573 7.57177 9.5983 6.6097 11.399 5.74443M4.392 17.2944C4.94997 16.7378 5.39244 16.0764 5.69396 15.3483C5.99549 14.6201 6.15013 13.8396 6.149 13.0514V11.5514" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> </svg> <p class="text-content dark:text-dark-content max-w-[90%] ml-2">University of Cambridge</p> </div> </a> <a href="https://canvas.harvard.edu/courses/124796" class="flex flex-col bg-[#00000003] card dark:dark-card rounded-lg border border-separator_30 p-5 flex flex-col gap-2"> <p class="text-xl text-title dark:text-dark-title">Principles of Programming Language Compilation</p> <div class="flex flex-wrap gap-2"> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-9 ">Lecture Notes</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-6 hidden">Exercises</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-11 ">Video Recordings</p> </div> <div class="flex items-center mt-auto"> <svg xmlns="http://www.w3.org/2000/svg" width="23" height="19" viewBox="0 0 23 19" fill="none" class="h-6 w-6 text-primary dark:text-dark-primary group-hover:text-primary group-hover:text-dark-primary max-w-[7%]"> <path d="M3.659 7.44843C3.38395 9.55401 3.22005 11.6726 3.168 13.7954C6.0468 14.9979 8.80318 16.4748 11.399 18.2054C13.9951 16.4747 16.7519 14.9979 19.631 13.7954C19.5789 11.6726 19.415 9.55401 19.14 7.44843M19.14 7.44843C20.015 7.15443 20.902 6.88243 21.798 6.63443C18.5346 4.34668 15.051 2.39032 11.399 0.794434C7.74699 2.39066 4.2634 4.34735 1 6.63543C1.89327 6.88206 2.77961 7.15316 3.658 7.44843C6.32662 8.34564 8.9159 9.46351 11.399 10.7904C13.8817 9.46349 16.4717 8.34563 19.14 7.44843ZM6.149 12.3014C6.34791 12.3014 6.53868 12.2224 6.67933 12.0818C6.81998 11.9411 6.899 11.7503 6.899 11.5514C6.899 11.3525 6.81998 11.1618 6.67933 11.0211C6.53868 10.8805 6.34791 10.8014 6.149 10.8014C5.95009 10.8014 5.75932 10.8805 5.61867 11.0211C5.47802 11.1618 5.399 11.3525 5.399 11.5514C5.399 11.7503 5.47802 11.9411 5.61867 12.0818C5.75932 12.2224 5.95009 12.3014 6.149 12.3014ZM6.149 12.3014V8.62643C7.84573 7.57177 9.5983 6.6097 11.399 5.74443M4.392 17.2944C4.94997 16.7378 5.39244 16.0764 5.69396 15.3483C5.99549 14.6201 6.15013 13.8396 6.149 13.0514V11.5514" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> </svg> <p class="text-content dark:text-dark-content max-w-[90%] ml-2">Harvard University</p> </div> </a> <a href="https://www.informatique.univ-paris-diderot.fr/formations/licences/ue/l1/ipf1" class="flex flex-col bg-[#00000003] card dark:dark-card rounded-lg border border-separator_30 p-5 flex flex-col gap-2"> <p class="text-xl text-title dark:text-dark-title">Introduction to Functional Programming</p> <div class="flex flex-wrap gap-2"> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-9 hidden">Lecture Notes</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-6 hidden">Exercises</p> <p class="px-3 inline-block max-w-max rounded-3xl font-mono text-sm text-center text-white bg-avatar-11 hidden">Video Recordings</p> </div> <div class="flex items-center mt-auto"> <svg xmlns="http://www.w3.org/2000/svg" width="23" height="19" viewBox="0 0 23 19" fill="none" class="h-6 w-6 text-primary dark:text-dark-primary group-hover:text-primary group-hover:text-dark-primary max-w-[7%]"> <path d="M3.659 7.44843C3.38395 9.55401 3.22005 11.6726 3.168 13.7954C6.0468 14.9979 8.80318 16.4748 11.399 18.2054C13.9951 16.4747 16.7519 14.9979 19.631 13.7954C19.5789 11.6726 19.415 9.55401 19.14 7.44843M19.14 7.44843C20.015 7.15443 20.902 6.88243 21.798 6.63443C18.5346 4.34668 15.051 2.39032 11.399 0.794434C7.74699 2.39066 4.2634 4.34735 1 6.63543C1.89327 6.88206 2.77961 7.15316 3.658 7.44843C6.32662 8.34564 8.9159 9.46351 11.399 10.7904C13.8817 9.46349 16.4717 8.34563 19.14 7.44843ZM6.149 12.3014C6.34791 12.3014 6.53868 12.2224 6.67933 12.0818C6.81998 11.9411 6.899 11.7503 6.899 11.5514C6.899 11.3525 6.81998 11.1618 6.67933 11.0211C6.53868 10.8805 6.34791 10.8014 6.149 10.8014C5.95009 10.8014 5.75932 10.8805 5.61867 11.0211C5.47802 11.1618 5.399 11.3525 5.399 11.5514C5.399 11.7503 5.47802 11.9411 5.61867 12.0818C5.75932 12.2224 5.95009 12.3014 6.149 12.3014ZM6.149 12.3014V8.62643C7.84573 7.57177 9.5983 6.6097 11.399 5.74443M4.392 17.2944C4.94997 16.7378 5.39244 16.0764 5.69396 15.3483C5.99549 14.6201 6.15013 13.8396 6.149 13.0514V11.5514" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> </svg> <p class="text-content dark:text-dark-content max-w-[90%] ml-2">Universit茅 Paris Cit茅</p> </div> </a> </div> <a href="/academic-users/institutions" class="flex group mt-4 cursor-pointer"> <p class="text-primary dark:text-dark-white dark:underline hover:underline mr-2 hover:dark:text-dark-primary truncate max-w-[90%] ml-2 group-hover:text-primary"> View all Course Materials </p> <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-primary dark:text-dark-white group-hover:text-primary group-hover:text-dark-primary max-w-[7%]" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 12h15m0 0l-6.75-6.75M19.5 12l-6.75 6.75" /> </svg> </a> </div> </div> <div class="w-full bg-sand dark:dark-deep-blue-gradient py-8 border-b border-separator_20 dark:border-separator_30"> <div class="container-fluid"> <p class="text-title dark:text-dark-title text-2xl font-bold mb-2">Research Papers</p> <p class="text-content dark:text-dark-content mb-2">Understand the theoretical foundations of the OCaml programming language and compiler</p> <div class="grid grid-cols-1 pb-2 lg:grid-cols-3 gap-8 mt-6"> <div class="flex flex-col bg-[#00000003] card dark:dark-card rounded-lg p-5"> <p class="text-xl text-title dark:text-dark-title font-bold">Retrofitting Effect Handlers Onto OCaml</p> <p class="text-content dark:text-dark-content truncate-2-lines mt-2 leading-7">Effect handlers have been gathering momentum as a mechanism for modular programming with user-defined effects. Effect handlers allow for non-local control flow mechanisms such as generators, async/await, lightweight threads, and coroutines to be composably expressed. We present a design and evaluate a full-fledged efficient implementation of effect handlers for OCaml, an industrial-strength multi-paradigm programming language. Our implementation strives to maintain the backwards compatibility and performance profile of existing OCaml code. Retrofitting effect handlers onto OCaml is challenging since OCaml does not currently have any non-local control flow mechanisms other than exceptions. Our implementation of effect handlers for OCaml: (i) imposes a mean 1% overhead on a comprehensive macro benchmark suite that does not use effect handlers; (ii) remains compatible with program analysis tools that inspect the stack; and (iii) is efficient for new code that makes use of effect handlers. </p> <p class="text-title dark:text-dark-title mt-2 text-sm">K. C. Sivaramakrishnan, Stephen Dolan, Leo White, Tom Kelly, Sadiq Jaffer, Anil Madhavapeddy</p> <div class="flex flex-row flex-wrap"> <div class="px-3 mb-2 inline-block bg-primary dark:bg-dark-primary max-w-max rounded-3xl font-mono text-center text-sm text-white mt-3 mr-2"> PLDI </div> <div class="px-3 mb-2 inline-block bg-primary dark:bg-dark-primary max-w-max rounded-3xl font-mono text-center text-sm text-white mt-3 mr-2"> effects </div> </div> <div class="flex flex-row flex-wrap mt-auto"> <a href="https://dl.acm.org/doi/10.1145/3453483.3454039" class="flex items-center mt-2"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="25" viewBox="0 0 24 25" fill="none" class="text-primary dark:text-dark-primary hover:dark:text-dark-primary dark:underline hover:underline truncate max-w-[90%] ml-2" aria-hidden="true"> <path d="M12 7.75H13.5M12 10.75H13.5M6 13.75H13.5M6 16.75H13.5M16.5 7.75H19.875C20.496 7.75 21 8.254 21 8.875V18.25C21 18.8467 20.7629 19.419 20.341 19.841C19.919 20.2629 19.3467 20.5 18.75 20.5M16.5 7.75V18.25C16.5 18.8467 16.7371 19.419 17.159 19.841C17.581 20.2629 18.1533 20.5 18.75 20.5M16.5 7.75V5.125C16.5 4.504 15.996 4 15.375 4H4.125C3.504 4 3 4.504 3 5.125V18.25C3 18.8467 3.23705 19.419 3.65901 19.841C4.08097 20.2629 4.65326 20.5 5.25 20.5H18.75M6 7.75H9V10.75H6V7.75Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> </svg> <p class="text-primary dark:text-dark-primary hover:dark:text-dark-primary hover:underline truncate max-w-[90%] ml-2">Download PDF</p> </a> </div> </div> <div class="flex flex-col bg-[#00000003] card dark:dark-card rounded-lg p-5"> <p class="text-xl text-title dark:text-dark-title font-bold">Extending OCaml&#x27;s `open`</p> <p class="text-content dark:text-dark-content truncate-2-lines mt-2 leading-7">We propose a harmonious extension of OCaml&#x27;s `open` construct. OCaml&#x27;s existing construct `open M` imports the names exported by the module `M` into the current scope. At present `M` is required to be the path to a module. We propose extending `open` to instead accept an arbitrary module expression, making it possible to succinctly address a number of existing scope-related difficulties that arise when writing OCaml programs. </p> <p class="text-title dark:text-dark-title mt-2 text-sm">Runhang Li, Jeremy Yallop</p> <div class="flex flex-row flex-wrap"> <div class="px-3 mb-2 inline-block bg-primary dark:bg-dark-primary max-w-max rounded-3xl font-mono text-center text-sm text-white mt-3 mr-2"> ocaml-workshop </div> <div class="px-3 mb-2 inline-block bg-primary dark:bg-dark-primary max-w-max rounded-3xl font-mono text-center text-sm text-white mt-3 mr-2"> core </div> <div class="px-3 mb-2 inline-block bg-primary dark:bg-dark-primary max-w-max rounded-3xl font-mono text-center text-sm text-white mt-3 mr-2"> language </div> </div> <div class="flex flex-row flex-wrap mt-auto"> <a href="https://arxiv.org/pdf/1905.06543.pdf" class="flex items-center mt-2"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="25" viewBox="0 0 24 25" fill="none" class="text-primary dark:text-dark-primary hover:dark:text-dark-primary dark:underline hover:underline truncate max-w-[90%] ml-2" aria-hidden="true"> <path d="M12 7.75H13.5M12 10.75H13.5M6 13.75H13.5M6 16.75H13.5M16.5 7.75H19.875C20.496 7.75 21 8.254 21 8.875V18.25C21 18.8467 20.7629 19.419 20.341 19.841C19.919 20.2629 19.3467 20.5 18.75 20.5M16.5 7.75V18.25C16.5 18.8467 16.7371 19.419 17.159 19.841C17.581 20.2629 18.1533 20.5 18.75 20.5M16.5 7.75V5.125C16.5 4.504 15.996 4 15.375 4H4.125C3.504 4 3 4.504 3 5.125V18.25C3 18.8467 3.23705 19.419 3.65901 19.841C4.08097 20.2629 4.65326 20.5 5.25 20.5H18.75M6 7.75H9V10.75H6V7.75Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> </svg> <p class="text-primary dark:text-dark-primary hover:dark:text-dark-primary hover:underline truncate max-w-[90%] ml-2">Download PDF</p> </a> </div> </div> <div class="flex flex-col bg-[#00000003] card dark:dark-card rounded-lg p-5"> <p class="text-xl text-title dark:text-dark-title font-bold">Bounding Data Races in Space and Time</p> <p class="text-content dark:text-dark-content truncate-2-lines mt-2 leading-7">We propose a new semantics for shared-memory parallel programs that gives strong guarantees even in the presence of data races. Our local data race freedom property guar- antees that all data-race-free portions of programs exhibit sequential semantics. We provide a straightforward oper- ational semantics and an equivalent axiomatic model, and evaluate an implementation for the OCaml programming language. Our evaluation demonstrates that it is possible to balance a comprehensible memory model with a reasonable (no overhead on x86, ~0.6% on ARM) sequential performance trade-off in a mainstream programming language </p> <p class="text-title dark:text-dark-title mt-2 text-sm">Stephen Dolan, KC Sivaramakrishnan, Anil Madhavapeddy</p> <div class="flex flex-row flex-wrap"> <div class="px-3 mb-2 inline-block bg-primary dark:bg-dark-primary max-w-max rounded-3xl font-mono text-center text-sm text-white mt-3 mr-2"> PLDI </div> <div class="px-3 mb-2 inline-block bg-primary dark:bg-dark-primary max-w-max rounded-3xl font-mono text-center text-sm text-white mt-3 mr-2"> multicore </div> </div> <div class="flex flex-row flex-wrap mt-auto"> <a href="http://kcsrk.info/papers/pldi18-memory.pdf" class="flex items-center mt-2"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="25" viewBox="0 0 24 25" fill="none" class="text-primary dark:text-dark-primary hover:dark:text-dark-primary dark:underline hover:underline truncate max-w-[90%] ml-2" aria-hidden="true"> <path d="M12 7.75H13.5M12 10.75H13.5M6 13.75H13.5M6 16.75H13.5M16.5 7.75H19.875C20.496 7.75 21 8.254 21 8.875V18.25C21 18.8467 20.7629 19.419 20.341 19.841C19.919 20.2629 19.3467 20.5 18.75 20.5M16.5 7.75V18.25C16.5 18.8467 16.7371 19.419 17.159 19.841C17.581 20.2629 18.1533 20.5 18.75 20.5M16.5 7.75V5.125C16.5 4.504 15.996 4 15.375 4H4.125C3.504 4 3 4.504 3 5.125V18.25C3 18.8467 3.23705 19.419 3.65901 19.841C4.08097 20.2629 4.65326 20.5 5.25 20.5H18.75M6 7.75H9V10.75H6V7.75Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> </svg> <p class="text-primary dark:text-dark-primary hover:dark:text-dark-primary hover:underline truncate max-w-[90%] ml-2">Download PDF</p> </a> </div> </div> </div> <div class="flex group mt-4"> <a href="/papers" class="text-primary dark:text-dark-white dark:underline hover:underline mr-2 hover:dark:text-dark-primary truncate max-w-[90%] ml-2 group-hover:text-primary cursor-pointer"> View all Papers </a> <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-primary dark:text-dark-white group-hover:text-primary group-hover:text-dark-primary max-w-[7%]" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 12h15m0 0l-6.75-6.75M19.5 12l-6.75 6.75" /> </svg> </div> </div> </div> <div class="w-full bg-white dark:dark-section-navigation py-8 border-b border-separator_20 dark:border-separator_30"> <div class="container-fluid"> <div class="flex flex-col lg:flex-row gap-2 items-center w-full" x-data="{swiper: null}" x-init="swiper = new Swiper('#testimonialSwiper', {loop: true,slidesPerView: 'auto',autoHeight: true,spaceBetween: 10,breakpoints: {640: {slidesPerView:'auto', spaceBetween: 10,},768: {slidesPerView: 2},},})"> <button class="items-center justify-center w-[40px] h-[40px] rounded-full bg-separator_20 dark:bg-dark-separator_30 hidden lg:flex" @click="swiper.slidePrev()"> <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 text-white dark:text-dark-white" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M15.75 19.5L8.25 12l7.5-7.5" /> </svg> </button> <div class="w-full lg:w-11/12"> <h3 class="text-title dark:text-dark-title font-bold">What Researchers Say About Ocaml</h3> <div class="flex w-full overflow-hidden"> <div id="testimonialSwiper" class="swiper-container relative overflow-hidden"> <div class="mt-6 swiper-wrapper"> <div class="flex flex-col swiper-slide"> <span class=""><svg xmlns="http://www.w3.org/2000/svg" width="38" height="31" viewBox="0 0 38 31" fill="none" class=""> <g clip-path="url(#clip0_2406_121)"> <path d="M22.3203 32.8398V24.3438C22.3203 19.8906 22.8477 16.2383 23.9023 13.3867C24.9961 10.5352 26.832 8.11328 29.4102 6.12109C31.9883 4.12891 34.918 2.80078 38.1992 2.13672V8.93359C35.8945 10.2617 34.5859 12.0391 34.2734 14.2656H38.1992V32.8398H22.3203ZM1.10938 32.8398V24.3438C1.10938 19.8906 1.63672 16.2383 2.69141 13.3867C3.78516 10.5352 5.62109 8.11328 8.19922 6.12109C10.8164 4.12891 13.7461 2.80078 16.9883 2.13672V8.93359C14.6836 10.2617 13.375 12.0391 13.0625 14.2656H16.9883V32.8398H1.10938Z" fill="#D54000" fill-opacity="0.25"></path> </g> <defs> <clipPath id="clip0_2406_121"> <rect width="38" height="31" fill="white"></rect> </clipPath> </defs> </svg></span> <p class="text-content italic dark:text-dark-content leading-7 pl-10">Despite all this testing, we have never had a single XenServer defect reported from internal testing or from the field that can be traced back to a bug in the OCaml runtime or compiler. (During development we did once find a minor compiler bug, triggered when compiling auto-generated OCaml code with many function arguments, but this was already fixed in the development branch by the time we reported it. No interaction with the maintainers at INRIA was required.)</p> <div class="flex mt-4 pl-10"> <div> <p class="text-title dark:text-dark-title"><span>Scott, D. &amp; Sharp, R. &amp; Gazagnaire, T. &amp; Madhavapeddy, A.</span>(<span>2010</span>)</p> <p class="text-content dark:text-dark-content">Journal of Cheminformatics volume 11, Article number: 10</p> </div> </div> </div> <div class="flex flex-col swiper-slide"> <span class=""><svg xmlns="http://www.w3.org/2000/svg" width="38" height="31" viewBox="0 0 38 31" fill="none" class=""> <g clip-path="url(#clip0_2406_121)"> <path d="M22.3203 32.8398V24.3438C22.3203 19.8906 22.8477 16.2383 23.9023 13.3867C24.9961 10.5352 26.832 8.11328 29.4102 6.12109C31.9883 4.12891 34.918 2.80078 38.1992 2.13672V8.93359C35.8945 10.2617 34.5859 12.0391 34.2734 14.2656H38.1992V32.8398H22.3203ZM1.10938 32.8398V24.3438C1.10938 19.8906 1.63672 16.2383 2.69141 13.3867C3.78516 10.5352 5.62109 8.11328 8.19922 6.12109C10.8164 4.12891 13.7461 2.80078 16.9883 2.13672V8.93359C14.6836 10.2617 13.375 12.0391 13.0625 14.2656H16.9883V32.8398H1.10938Z" fill="#D54000" fill-opacity="0.25"></path> </g> <defs> <clipPath id="clip0_2406_121"> <rect width="38" height="31" fill="white"></rect> </clipPath> </defs> </svg></span> <p class="text-content italic dark:text-dark-content leading-7 pl-10">To us, OCaml has been proven quite productive for software prototyping in Chemoinformatics and Structural Bioinformatics method development. The software demonstrated here was used intensively and timely during scientific validation campaigns, on many molecules and protein targets. We have never regretted our choice of OCaml and still use it today.</p> <div class="flex mt-4 pl-10"> <div> <p class="text-title dark:text-dark-title"><span>Francois Berenger , Kam Y. J. Zhang and Yoshihiro Yamanishi.</span>(<span>2019</span>)</p> <p class="text-content dark:text-dark-content">ACM SIGPLAN Notices. 45. 87-92. 10.1145/1863543.1863557.</p> </div> </div> </div> </div> </div> </div> </div> <button class="items-center justify-center w-[40px] h-[40px] rounded-full bg-separator_20 dark:bg-dark-separator_30 hidden lg:flex" @click="swiper.slideNext()"> <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 text-white dark:text-dark-white" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5" /> </svg> </button> <div class="flex mt-5 lg:hidden"> <button class="items-center justify-center w-[40px] h-[40px] rounded-full bg-separator_20 dark:bg-dark-separator_30 flex lg:hidden mr-2" @click="swiper.slidePrev()"> <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 text-white dark:text-dark-white" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M15.75 19.5L8.25 12l7.5-7.5" /> </svg> </button> <button class="items-center justify-center w-[40px] h-[40px] rounded-full bg-separator_20 dark:bg-dark-separator_30 flex lg:hidden" @click="swiper.slideNext()"> <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 text-white dark:text-dark-white" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5" /> </svg> </button> </div> </div> </div> </div> <div class="py-8 bg-sand dark:dark-deep-blue-gradient"> <div class="container-fluid"> <p class="text-title dark:text-dark-title text-2xl font-bold mb-2">Recommended Books</p> <div class="grid gap-6 mt-6 lg:grid-cols-2"> <div class="md:h-full"> <div class="max-w-sm md:h-full md:max-w-full md:w-[32rem] flex flex-col"> <div class="pt-4 text-content dark:text-dark-content text-sm font-medium leading-7 tracking-widest flex gap-2 items-center"> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> <circle cx="10" cy="10" r="10" class="fill-secondary dark:fill-dark-secondary"/> </svg> RECOMMENDED BOOK </div> <h2 class="overflow-hidden mt-2 text-title dark:text-dark-title text-2xl font-bold leading-7">Learn Programming with OCaml</h2> <div class="grow mt-6 grid grid-cols-1 md:grid-cols-2 gap-6 pt-6"> <div class="flex flex-col"> <a href="https://usr.lmf.cnrs.fr/lpo/lpo.pdf" target="_blank"> <div class="relative"> <div class="absolute -mt-8 ml-3 w-16 h-16"> <div class="bg-primary dark:bg-dark-primary rotate-[-10deg] rounded-full w-16 h-16 flex items-center justify-center" style="filter: drop-shadow(-4px -2px 4px rgb(0 0 0 / 0.25));"> <div class="text-center text-white text-base font-bold leading-7 tracking-wide"> FREE </div> </div> </div> <img src="/media/_/NGYyNDk3NDljN2IxZWNhNDUzMjcyMDNkMGE4NTM4NTk/books/learn-programming-with-ocaml.jpg" class="w-full border z-10" alt=""> </div> </a> </div> <div> <div class="px-3 inline-block bg-secondary dark:bg-dark-secondary rounded-3xl font-semibold text-center text-white dark:text-dark-title tracking-widest"> Beginner </div> <div class="pt-4"> <a href="https://usr.lmf.cnrs.fr/lpo/lpo.pdf" class="flex gap-2 text-primary dark:text-dark-title hover:underline dark:hover:text-dark-primary items-center leading-8" target="_blank">PDF download <svg xmlns="http://www.w3.org/2000/svg" fill="none" class="h-4 w-4" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="size-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" /> </svg> </a> </div> </div> </div> <a href="" class="pt-6 w-max text-primary dark:text-dark-title hover:underline dark:underline hover:text-primary dark:hover:text-dark-primary items-center leading-10"> </a> </div> </div> <div class="md:h-full"> <div class="max-w-sm md:h-full md:max-w-full md:w-[32rem] flex flex-col"> <div class="pt-4 text-content dark:text-dark-content text-sm font-medium leading-7 tracking-widest flex gap-2 items-center"> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> <circle cx="10" cy="10" r="10" class="fill-secondary dark:fill-dark-secondary"/> </svg> RECOMMENDED BOOK </div> <h2 class="overflow-hidden mt-2 text-title dark:text-dark-title text-2xl font-bold leading-7">OCaml Programming: Correct + Efficient + Beautiful</h2> <div class="grow mt-6 grid grid-cols-1 md:grid-cols-2 gap-6 pt-6"> <div class="flex flex-col"> <a href="https://cs3110.github.io/textbook/" target="_blank"> <div class="relative"> <div class="absolute -mt-8 ml-3 w-16 h-16"> <div class="bg-primary dark:bg-dark-primary rotate-[-10deg] rounded-full w-16 h-16 flex items-center justify-center" style="filter: drop-shadow(-4px -2px 4px rgb(0 0 0 / 0.25));"> <div class="text-center text-white text-base font-bold leading-7 tracking-wide"> FREE </div> </div> </div> <img src="/media/_/NDE4NjEzZjUxYzA3MTVhOGZjMWI1YTg0MGY3NGZlY2M/books/ocaml-programming-cs3110.jpg" class="w-full border z-10" alt=""> </div> </a> </div> <div> <div class="px-3 inline-block bg-secondary dark:bg-dark-secondary rounded-3xl font-semibold text-center text-white dark:text-dark-title tracking-widest"> Beginner </div> <p class="mt-2 text-content dark:text-dark-content text-sm font-normal whitespace-normal max-w-prose"> This textbook, used in a third-semester Cornell course, teaches functional programming and data structures in OCaml, emphasizing semantics and software engineering. Suitable for students with Python and Java backgrounds, it requires some imperative language skills and basic discrete mathematics. The book includes over 200 YouTube videos as supplementary or alternative learning resources. </p> <div class="pt-4"> <a href="https://cs3110.github.io/textbook/" class="flex gap-2 text-primary dark:text-dark-title hover:underline dark:hover:text-dark-primary items-center leading-8" target="_blank">Read Online <svg xmlns="http://www.w3.org/2000/svg" fill="none" class="h-4 w-4" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="size-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" /> </svg> </a> </div> </div> </div> <a href="" class="pt-6 w-max text-primary dark:text-dark-title hover:underline dark:underline hover:text-primary dark:hover:text-dark-primary items-center leading-10"> </a> </div> </div> </div> <a href="/books" class="flex group mt-4"> <p class="text-primary dark:text-dark-white dark:underline hover:underline mr-2 hover:dark:text-dark-primary truncate max-w-[90%] ml-2 group-hover:text-primary"> View all books (18) </p> <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-primary dark:text-dark-white group-hover:text-primary group-hover:text-dark-primary max-w-[7%]" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 12h15m0 0l-6.75-6.75M19.5 12l-6.75 6.75" /> </svg> </a> </div> </div> <div class="w-full section-blue-gradient dark:dark-section-blue-gradient py-8"> <div class="container-fluid"> <p class="uppercase text-sm text-dark-content tracking-widest font-medium my-4">Industry</p> <div class="md:flex-row flex flex-col gap-12"> <div class="flex flex-col w-full md:w-[90%]"> <h1 class="m-0 font-sans font-bold tracking-normal leading-8 capitalize lg:tracking-tight text-2xl text-dark-title dark:text-dark-title"> Curious about How OCaml is Used in Industry? </h1> <p class="text-lg text-dark-content dark:text-dark-content mt-4">Go to our success stories to see how businesses use OCaml.</p> </div> <div class="flex lg:flex-row"> <a href="/industrial-users" class="group h-11 border w-full min-w-max border-primary dark:border-dark-primary text-base items-center justify-center inline-flex py-1 px-4 bg-white dark:bg-dark-background rounded-md hover:bg-primary hover:dark:bg-dark-primary md:text-lg cursor-pointer"> <svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" viewBox="0 0 22 20" fill="none" class="h-8 w-8 mr-2 text-primary dark:text-dark-primary group-hover:text-white"> <path d="M1 19H20.5M2.5 1V19M13 1V19M19 5.5V19M5.5 4.75H6.25M5.5 7.75H6.25M5.5 10.75H6.25M9.25 4.75H10M9.25 7.75H10M9.25 10.75H10M5.5 19V15.625C5.5 15.004 6.004 14.5 6.625 14.5H8.875C9.496 14.5 10 15.004 10 15.625V19M1.75 1H13.75M13 5.5H19.75M16 9.25H16.008V9.258H16V9.25ZM16 12.25H16.008V12.258H16V12.25ZM16 15.25H16.008V15.258H16V15.25Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> </svg> <span class="text-primary group-hover:text-white dark:text-white">Read about OCaml in Industry</span> </a> </div> </div> </div> </div> </main> <button class="fixed bottom-8 right-10 md:bottom-[5rem] lg:bottom-[8.37rem] lg:right-[6.5rem] border-0 hidden focus:outline-none z-50 rounded-full shadow-custom p-4 bg-primary dark:bg-dark-primary" onclick="scrollToTop()" id="scrollToTop" title="Scroll to top"><svg class="h-6 w-6" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> <path d="M4.5 10.5L12 3M12 3L19.5 10.5M12 3V21" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> </svg> </button> <footer x-data class="border-t border-separator_30 dark:border-dark-separator_30 bg-dark-sand dark:bg-dark-card" aria-labelledby="footer-heading"> <h2 id="footer-heading" class="sr-only">Footer</h2> <div class="mx-auto max-w-7xl px-6 py-16 lg:px-8"> <div class="flex w-full items-center justify-between mb-8"> <a href="/"><img class="h-8 dark:hidden" src="/_/MDBjN2M4YjIxY2Y1YWExZWE3Njk4M2FiZTg1NWZjNTM/logo-with-name.svg" alt="OCaml"> <img class="h-8 hidden dark:inline" src="/_/MTE3YWE5YzJlZmExNmYyMmI3ZmEwYjliMDEwNDBkMDY/logo-with-name-white.svg" alt="OCaml"> </a> <div class="hidden md:flex"> <button class="flex grow basis-0 justify-center items-center py-2 px-4 text-sm border rounded-l rounded-l-full border-r-0" :class='$store.themeSettings.preference === "light" ? "bg-gradient-to-r from-[#FFA932] to-[#C24F1E] text-white dark:text-dark-title outline-none" : "bg-white text-content outline-2 outline-card_border dark:outline-dark-separator_30"' @click='$store.themeSettings.setPreference("light")' > <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" fill="none" class="mr-2"> <path d="M7 0.5V2.125M11.5962 2.40378L10.4472 3.55283M13.5 7H11.875M11.5962 11.5962L10.4472 10.4472M7 11.875V13.5M3.55283 10.4472L2.40378 11.5962M2.125 7H0.5M3.55283 3.55283L2.40378 2.40378M9.70833 7C9.70833 7.71829 9.42299 8.40717 8.91508 8.91508C8.40717 9.42299 7.71829 9.70833 7 9.70833C6.28171 9.70833 5.59283 9.42299 5.08492 8.91508C4.57701 8.40717 4.29167 7.71829 4.29167 7C4.29167 6.28171 4.57701 5.59283 5.08492 5.08492C5.59283 4.57701 6.28171 4.29167 7 4.29167C7.71829 4.29167 8.40717 4.57701 8.91508 5.08492C9.42299 5.59283 9.70833 6.28171 9.70833 7Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> </svg> Light </button> <button class="flex grow basis-0 justify-center items-center py-2 px-4 text-sm border border-r-0" :class='$store.themeSettings.preference === "dark" ? "bg-gradient-to-r from-[#0F254F] to-[#0B1228] text-white dark:text-dark-title outline-none" : "bg-white text-content outline-2 outline-card_border dark:outline-dark-separator_30"' @click='$store.themeSettings.setPreference("dark")' > <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none" class="mr-2"> <path d="M11.1573 7.90842C10.5134 8.17678 9.8226 8.3145 9.125 8.31358C6.20812 8.31358 3.84375 5.94921 3.84375 3.03233C3.84375 2.31192 3.98783 1.62562 4.24892 1C3.28663 1.40144 2.46465 2.07865 1.88651 2.94635C1.30836 3.81404 0.999911 4.83342 1 5.87608C1 8.79296 3.36437 11.1573 6.28125 11.1573C7.32391 11.1574 8.34329 10.849 9.21099 10.2708C10.0787 9.69268 10.7559 8.8707 11.1573 7.90842Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> </svg> Dark </button> <button class="flex grow basis-0 justify-center items-center py-2 px-4 text-sm border rounded-r rounded-r-full" :class='$store.themeSettings.preference === "system" ? "bg-gradient-to-r from-[#2B7866] to-[#004039] text-white dark:text-dark-title outline-none" : "bg-white text-content outline-2 outline-card_border dark:outline-dark-separator_30"' @click='$store.themeSettings.setPreference("system")' > <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" class="mr-2"> <path d="M7.19553 2.955C7.26303 2.5485 7.61553 2.25 8.02803 2.25H9.97278C10.3853 2.25 10.7378 2.5485 10.8053 2.955L10.965 3.91575C11.0123 4.19625 11.1998 4.43025 11.4488 4.56825C11.5043 4.59825 11.559 4.6305 11.6138 4.6635C11.8575 4.8105 12.1538 4.85625 12.42 4.7565L13.3328 4.4145C13.5198 4.34416 13.7258 4.34248 13.9139 4.40978C14.1021 4.47708 14.2603 4.60899 14.3603 4.782L15.3323 6.46725C15.4321 6.64028 15.4672 6.8431 15.4315 7.03962C15.3958 7.23615 15.2916 7.41363 15.1373 7.5405L14.385 8.16075C14.1653 8.3415 14.0565 8.6205 14.0625 8.90475C14.0636 8.9685 14.0636 9.03225 14.0625 9.096C14.0565 9.3795 14.1653 9.6585 14.385 9.83925L15.138 10.4595C15.456 10.722 15.5385 11.1758 15.333 11.532L14.3595 13.2172C14.2597 13.3902 14.1017 13.5222 13.9137 13.5896C13.7257 13.657 13.5198 13.6556 13.3328 13.5855L12.42 13.2435C12.1538 13.1438 11.8575 13.1895 11.613 13.3365C11.5587 13.3696 11.5037 13.4016 11.448 13.4325C11.1998 13.5697 11.0123 13.8037 10.965 14.0842L10.8053 15.045C10.7378 15.4523 10.3853 15.75 9.97278 15.75H8.02728C7.61478 15.75 7.26303 15.4515 7.19478 15.045L7.03503 14.0842C6.98853 13.8037 6.80103 13.5698 6.55203 13.4318C6.49642 13.4011 6.44141 13.3693 6.38703 13.3365C6.14328 13.1895 5.84703 13.1438 5.58003 13.2435L4.66728 13.5855C4.48033 13.6556 4.27456 13.6572 4.08656 13.5899C3.89856 13.5226 3.74051 13.3908 3.64053 13.218L2.66778 11.5328C2.56799 11.3597 2.53282 11.1569 2.56852 10.9604C2.60423 10.7639 2.7085 10.5864 2.86278 10.4595L3.61578 9.83925C3.83478 9.65925 3.94353 9.3795 3.93828 9.096C3.93711 9.03226 3.93711 8.96849 3.93828 8.90475C3.94353 8.61975 3.83478 8.3415 3.61578 8.16075L2.86278 7.5405C2.70869 7.41367 2.60454 7.23633 2.56884 7.03997C2.53314 6.84361 2.56819 6.64095 2.66778 6.468L3.64053 4.78275C3.74042 4.6096 3.89854 4.47754 4.08672 4.4101C4.27489 4.34266 4.4809 4.34422 4.66803 4.4145L5.58003 4.7565C5.84703 4.85625 6.14328 4.8105 6.38703 4.6635C6.44103 4.6305 6.49653 4.599 6.55203 4.5675C6.80103 4.43025 6.98853 4.19625 7.03503 3.91575L7.19553 2.955Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> <path d="M11.25 9C11.25 9.59674 11.0129 10.169 10.591 10.591C10.169 11.0129 9.59674 11.25 9 11.25C8.40326 11.25 7.83097 11.0129 7.40901 10.591C6.98705 10.169 6.75 9.59674 6.75 9C6.75 8.40326 6.98705 7.83097 7.40901 7.40901C7.83097 6.98705 8.40326 6.75 9 6.75C9.59674 6.75 10.169 6.98705 10.591 7.40901C11.0129 7.83097 11.25 8.40326 11.25 9Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> </svg> System </button> </div> </div> <div class="xl:grid xl:grid-cols-3 xl:gap-8"> <div class="space-y-8"> <p class="text-base leading-6 text-title dark:text-dark-content">Innovation. Community. Security.</p> <div class="flex space-x-6"> <a href="https://github.com/ocaml" class="text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary"> <span class="sr-only">GitHub</span> <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"> <path fill-rule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clip-rule="evenodd" /> </svg> </a> <a href="https://discord.gg/cCYQbqN" class="text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary"> <span class="sr-only">Discord</span> <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"> <path fill-rule="evenodd" d="M18.9419 5.29661C17.6473 4.69088 16.263 4.25066 14.8157 4C14.638 4.32134 14.4304 4.75355 14.2872 5.09738C12.7487 4.86601 11.2245 4.86601 9.7143 5.09738C9.57116 4.75355 9.3588 4.32134 9.17947 4C7.73067 4.25066 6.3448 4.6925 5.05016 5.29982C2.43887 9.24582 1.73099 13.0938 2.08493 16.8872C3.81688 18.1805 5.49534 18.9662 7.14548 19.4804C7.55291 18.9196 7.91628 18.3235 8.22931 17.6953C7.63313 17.4688 7.06211 17.1892 6.52256 16.8647C6.6657 16.7586 6.80571 16.6478 6.94098 16.5337C10.2318 18.0729 13.8074 18.0729 17.0589 16.5337C17.1958 16.6478 17.3358 16.7586 17.4774 16.8647C16.9362 17.1908 16.3637 17.4704 15.7675 17.697C16.0805 18.3235 16.4423 18.9212 16.8513 19.4819C18.503 18.9678 20.183 18.1822 21.915 16.8872C22.3303 12.4897 21.2056 8.67705 18.9419 5.29661ZM8.67765 14.5543C7.68977 14.5543 6.87963 13.632 6.87963 12.509C6.87963 11.3859 7.67247 10.4621 8.67765 10.4621C9.68285 10.4621 10.493 11.3843 10.4757 12.509C10.4772 13.632 9.68285 14.5543 8.67765 14.5543ZM15.3223 14.5543C14.3344 14.5543 13.5243 13.632 13.5243 12.509C13.5243 11.3859 14.3171 10.4621 15.3223 10.4621C16.3275 10.4621 17.1376 11.3843 17.1203 12.509C17.1203 13.632 16.3275 14.5543 15.3223 14.5543Z" clip-rule="evenodd" /> </svg> </a> <a href="https://twitter.com/ocaml_org" class="text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary"> <span class="sr-only">Twitter</span> <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"> <path d="M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84" /> </svg> </a> <a href="https://watch.ocaml.org/" class="text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary"> <span class="sr-only">Peertube</span> <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"> <path fill-rule="evenodd" d="M5 2V12L12.4998 7.00047" clip-rule="evenodd" /> <path fill-rule="evenodd" d="M5 12V22L12.4998 17.0005" clip-rule="evenodd" /> <path fill-rule="evenodd" d="M12.4998 6.99951V16.9995L19.9995 12" clip-rule="evenodd" /> </svg> </a> <a href="/planet.xml" class="text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary"> <span class="sr-only">RSS</span> <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"> <path fill-rule="evenodd" d="M15.2692 22H11.3846C11.3846 16.8462 7.11538 12.6154 2 12.6154V8.73077C9.26923 8.73077 15.2692 14.7308 15.2692 22ZM18 22C18 13.2308 10.7692 6 2 6V2C12.9615 2 22 11.0385 22 22H18Z" clip-rule="evenodd" /> <path fill-rule="evenodd" d="M4.73077 22C6.23893 22 7.46154 20.7774 7.46154 19.2692C7.46154 17.7611 6.23893 16.5385 4.73077 16.5385C3.22261 16.5385 2 17.7611 2 19.2692C2 20.7774 3.22261 22 4.73077 22Z" clip-rule="evenodd" /> </svg> </a> </div> <div class="flex w-full md:hidden"> <button class="flex grow basis-0 justify-center items-center py-2 px-4 text-sm border rounded-l rounded-l-full border-r-0" :class='$store.themeSettings.preference === "light" ? "bg-gradient-to-r from-[#FFA932] to-[#C24F1E] text-white dark:text-dark-title outline-none" : "bg-white text-content outline-2 outline-card_border dark:outline-dark-separator_30"' @click='$store.themeSettings.setPreference("light")' > <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" fill="none" class="mr-2"> <path d="M7 0.5V2.125M11.5962 2.40378L10.4472 3.55283M13.5 7H11.875M11.5962 11.5962L10.4472 10.4472M7 11.875V13.5M3.55283 10.4472L2.40378 11.5962M2.125 7H0.5M3.55283 3.55283L2.40378 2.40378M9.70833 7C9.70833 7.71829 9.42299 8.40717 8.91508 8.91508C8.40717 9.42299 7.71829 9.70833 7 9.70833C6.28171 9.70833 5.59283 9.42299 5.08492 8.91508C4.57701 8.40717 4.29167 7.71829 4.29167 7C4.29167 6.28171 4.57701 5.59283 5.08492 5.08492C5.59283 4.57701 6.28171 4.29167 7 4.29167C7.71829 4.29167 8.40717 4.57701 8.91508 5.08492C9.42299 5.59283 9.70833 6.28171 9.70833 7Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> </svg> Light </button> <button class="flex grow basis-0 justify-center items-center py-2 px-4 text-sm border border-r-0" :class='$store.themeSettings.preference === "dark" ? "bg-gradient-to-r from-[#0F254F] to-[#0B1228] text-white dark:text-dark-title outline-none" : "bg-white text-content outline-2 outline-card_border dark:outline-dark-separator_30"' @click='$store.themeSettings.setPreference("dark")' > <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none" class="mr-2"> <path d="M11.1573 7.90842C10.5134 8.17678 9.8226 8.3145 9.125 8.31358C6.20812 8.31358 3.84375 5.94921 3.84375 3.03233C3.84375 2.31192 3.98783 1.62562 4.24892 1C3.28663 1.40144 2.46465 2.07865 1.88651 2.94635C1.30836 3.81404 0.999911 4.83342 1 5.87608C1 8.79296 3.36437 11.1573 6.28125 11.1573C7.32391 11.1574 8.34329 10.849 9.21099 10.2708C10.0787 9.69268 10.7559 8.8707 11.1573 7.90842Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> </svg> Dark </button> <button class="flex grow basis-0 justify-center items-center py-2 px-4 text-sm border rounded-r rounded-r-full" :class='$store.themeSettings.preference === "system" ? "bg-gradient-to-r from-[#2B7866] to-[#004039] text-white dark:text-dark-title outline-none" : "bg-white text-content outline-2 outline-card_border dark:outline-dark-separator_30"' @click='$store.themeSettings.setPreference("system")' > <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" class="mr-2"> <path d="M7.19553 2.955C7.26303 2.5485 7.61553 2.25 8.02803 2.25H9.97278C10.3853 2.25 10.7378 2.5485 10.8053 2.955L10.965 3.91575C11.0123 4.19625 11.1998 4.43025 11.4488 4.56825C11.5043 4.59825 11.559 4.6305 11.6138 4.6635C11.8575 4.8105 12.1538 4.85625 12.42 4.7565L13.3328 4.4145C13.5198 4.34416 13.7258 4.34248 13.9139 4.40978C14.1021 4.47708 14.2603 4.60899 14.3603 4.782L15.3323 6.46725C15.4321 6.64028 15.4672 6.8431 15.4315 7.03962C15.3958 7.23615 15.2916 7.41363 15.1373 7.5405L14.385 8.16075C14.1653 8.3415 14.0565 8.6205 14.0625 8.90475C14.0636 8.9685 14.0636 9.03225 14.0625 9.096C14.0565 9.3795 14.1653 9.6585 14.385 9.83925L15.138 10.4595C15.456 10.722 15.5385 11.1758 15.333 11.532L14.3595 13.2172C14.2597 13.3902 14.1017 13.5222 13.9137 13.5896C13.7257 13.657 13.5198 13.6556 13.3328 13.5855L12.42 13.2435C12.1538 13.1438 11.8575 13.1895 11.613 13.3365C11.5587 13.3696 11.5037 13.4016 11.448 13.4325C11.1998 13.5697 11.0123 13.8037 10.965 14.0842L10.8053 15.045C10.7378 15.4523 10.3853 15.75 9.97278 15.75H8.02728C7.61478 15.75 7.26303 15.4515 7.19478 15.045L7.03503 14.0842C6.98853 13.8037 6.80103 13.5698 6.55203 13.4318C6.49642 13.4011 6.44141 13.3693 6.38703 13.3365C6.14328 13.1895 5.84703 13.1438 5.58003 13.2435L4.66728 13.5855C4.48033 13.6556 4.27456 13.6572 4.08656 13.5899C3.89856 13.5226 3.74051 13.3908 3.64053 13.218L2.66778 11.5328C2.56799 11.3597 2.53282 11.1569 2.56852 10.9604C2.60423 10.7639 2.7085 10.5864 2.86278 10.4595L3.61578 9.83925C3.83478 9.65925 3.94353 9.3795 3.93828 9.096C3.93711 9.03226 3.93711 8.96849 3.93828 8.90475C3.94353 8.61975 3.83478 8.3415 3.61578 8.16075L2.86278 7.5405C2.70869 7.41367 2.60454 7.23633 2.56884 7.03997C2.53314 6.84361 2.56819 6.64095 2.66778 6.468L3.64053 4.78275C3.74042 4.6096 3.89854 4.47754 4.08672 4.4101C4.27489 4.34266 4.4809 4.34422 4.66803 4.4145L5.58003 4.7565C5.84703 4.85625 6.14328 4.8105 6.38703 4.6635C6.44103 4.6305 6.49653 4.599 6.55203 4.5675C6.80103 4.43025 6.98853 4.19625 7.03503 3.91575L7.19553 2.955Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> <path d="M11.25 9C11.25 9.59674 11.0129 10.169 10.591 10.591C10.169 11.0129 9.59674 11.25 9 11.25C8.40326 11.25 7.83097 11.0129 7.40901 10.591C6.98705 10.169 6.75 9.59674 6.75 9C6.75 8.40326 6.98705 7.83097 7.40901 7.40901C7.83097 6.98705 8.40326 6.75 9 6.75C9.59674 6.75 10.169 6.98705 10.591 7.40901C11.0129 7.83097 11.25 8.40326 11.25 9Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> </svg> System </button> </div> </div> <div class="mt-8 grid grid-cols-2 gap-8 xl:col-span-2 xl:mt-0"> <div class="md:grid md:grid-cols-2 md:gap-8"> <div> <h3 class="text-base font-semibold leading-6 text-title dark:text-dark-content">About OCaml</h3> <ul class="mt-6 space-y-4"> <li> <a href="/changelog" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Changelog</a> </li> <li> <a href="/releases" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Releases</a> </li> <li> <a href="/industrial-users" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Industrial Users</a> </li> <li> <a href="/academic-users" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Academic Users</a> </li> <li> <a href="/about" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Why OCaml</a> </li> </ul> </div> <div class="mt-10 md:mt-0"> <h3 class="text-base font-semibold leading-6 text-title dark:text-dark-content">Resources</h3> <ul class="mt-6 space-y-4"> <li> <a href="/install" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Install OCaml</a> </li> <li> <a href="/docs/get-started" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Get Started</a> </li> <li> <a href="/docs/tools" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Platform Tools</a> </li> <li> <a href="/manual" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Language Manual</a> </li> <li> <a href="/api" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Standard Library API</a> </li> <li> <a href="/books" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Books</a> </li> <li> <a href="/exercises" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Exercises</a> </li> <li> <a href="/papers" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Papers</a> </li> <li> <a href="/play" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">OCaml Playground</a> </li> <li> <a href="/logo" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Logo</a> </li> </ul> </div> </div> <div class="md:grid md:grid-cols-2 md:gap-8"> <div> <h3 class="text-base font-semibold leading-6 text-title dark:text-dark-content">Ecosystem</h3> <ul class="mt-6 space-y-4"> <li> <a href="/packages" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Packages</a> </li> <li> <a href="/community" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Community</a> </li> <li> <a href="/events" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Events</a> </li> <li> <a href="/ocaml-planet" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">OCaml Planet</a> </li> <li> <a href="/jobs" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Jobs</a> </li> </ul> </div> <div class="mt-20 md:mt-0"> <h3 class="text-base font-semibold leading-6 text-title dark:text-dark-content">Policies</h3> <ul class="mt-6 space-y-4"> <li> <a href="/policies/carbon-footprint" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Carbon Footprint</a> </li> <li> <a href="/governance" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Governance</a> </li> <li> <a href="/policies/privacy-policy" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Privacy</a> </li> <li> <a href="/policies/code-of-conduct" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Code of Conduct</a> </li> </ul> </div> </div> </div> </div> </div> <script> document.addEventListener('alpine:init', () => { Alpine.store('themeSettings', { init() { this.storageAccess = localStorage.getItem('storageAccess') this.preference = localStorage.getItem('theme') || "system" this.isSystemDefaultDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches }, selected: '', alertOpen: false, storageAccess: false, preference: undefined, isSystemDefaultDark: false, setPreference(preference) { if (!this.storageAccess) { if (!window.confirm("We will remember your choice in your browser's LocalStorage. Allow this?")) { return; } localStorage.setItem('storageAccess', true) storageAccess = true; } this.selected = preference; this.preference = preference localStorage.setItem('theme', preference) if (preference === 'dark') { document.body.classList.add("dark"); } if (preference === 'light') { document.body.classList.remove("dark"); } if (preference === 'system') { if (this.isSystemDefaultDark) { document.body.classList.add("dark"); } else { document.body.classList.remove("dark"); } localStorage.removeItem('theme') return } }, }) }) </script> </footer> <script> function scrollToTop() { window.scrollTo(0, 0); } window.onscroll = function() { showScrollButton(); }; function showScrollButton() { if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) { document.getElementById("scrollToTop").style.display = "block"; } else { document.getElementById("scrollToTop").style.display = "none"; } } </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10