OCaml is a statically typed functional language with a fast native code compiler and incremental garbage collector. In this tutorial, we will first introduce the basics of OCaml using an interactive environment running in a web browser, as well as a local install of OCaml using the OPAM package manager. We will also explore how to compile OCaml to JavaScript using the js_of_ocaml tool.

This tutorial is aimed at people with programming experience. Previous experience with a functional language will be useful but is not required. No prior knowledge of OCaml is assumed.


Outline/Structure of the Tutorial

The aim of this session is to write an implementation of the popular game 2048. We'll start with a brief introduction to OCaml, with a tour through the parts of the language that you'll need for this session. We've also prepared IOCaml notebooks available to guide you through these fundamental language constructs. Once you've completed the notebooks you'll be ready to jump into implementing the game.

Learning Outcome

This tutorial aims to give an introduction to the OCaml language. Attendees should leave feeling comfortable writing simple OCaml programs and using core OCaml tools.

Target Audience

Anyone with programming experience looking to learn industrial strength functional programming.

schedule Submitted 6 years ago

  • Amit Rathore

    Amit Rathore - Functional Programming and the Battle for Survival

    Amit Rathore
    Amit Rathore
    Founder & CEO
    schedule 6 years ago
    Sold Out!
    60 Mins

    Startups are hot. They're fun. They're exciting, challenging, and romantic. They're also brutal. Only 1 in 20 startups succeed. 

    This talk is about how functional programming gives startups an advantage. Because every advantage is critical, in the fight to survive. And then to scale up, and thrive.

  • 60 Mins

    In this talk, I will talk about our motivation for creating Julia. Julia is a high-level, high-performance dynamic programming language. It provides a sophisticated compiler, distributed parallel execution, numerical accuracy, and an extensive mathematical function library. Julia’s Base library, largely written in Julia itself, also integrates mature, best-of-breed open source C and Fortran libraries for linear algebra, random number generation, signal processing, and string processing. In addition, the Julia developer community is contributing a number of external packages through Julia’s built-in package manager at a rapid pace. This is why Julia is seeing rapid adoption in universities for teaching and research, as well as in businesses.

    I will discuss what makes Julia fast. Julia's ability to combine these levels of performance and productivity in a single language stems from the choice of a number of features that work well with each other:

    1. An expressive parametric type system, allowing optional type annotations;
    2. Multiple dispatch using those types to select implementations;
    3. A dynamic dataflow type inference algorithm allowing types of most expressions to be inferred;
    4. Aggressive code specialization against run-time types;
    5. Metaprogramming;
    6. Just-In-Time compilation using the LLVM compiler framework; and
    7. Careful design of the language and standard library to be amenable to type analysis;

    I will also touch upon how the language design has made it possible to explore many parallel programming models in Julia, completely within the language.

    See: http://www.julialang.org/

  • Naresh Jain

    Naresh Jain / Dhaval Dalal - Live Code Jugalbandi

    90 Mins

    In Indian classical music, we have Jugalbandi, where two lead musicians or vocalist engage in a playful competition. There is jugalbandi between Flutist and a Percussionist (say using Tabla as the instrument). Compositions rendered by flutist will be heard by the percussionist and will replay the same notes, but now on Tabla and vice-versa is also possible.

    In a similar way, we will perform Code Jugalbandi to see how the solution looks using different programming languages and paradigms.

    During the session, conference attendees will take turns at coding the same problem using different languages and paradigms. There would be multiple such attempts by different participants during the Jugalbandi.

  • K C Sivaramakrishnan

    K C Sivaramakrishnan - Build Your Own Effects

    45 Mins

    Most practical programming languages include ways of performing various non-functional effects, such as exceptions, generators, dynamic binding and concurrency. Languages typically offer ways for programmers to define new functions, new types, and sometimes even new syntax, but the set of available effects is usually baked into the language and cannot be extended within programs.

    In this talk I'll show how a single language construct in OCaml, the effect handler, makes it possible to define all the above effects and more within a program, transferring power from language designers to language users. In particular, I will talk about how effect handlers allow expressing custom concurrency primitives for Multicore OCaml

  • Daniel Steinberg

    Daniel Steinberg - Introduction to Swift Workshop

    Daniel Steinberg
    Daniel Steinberg
    schedule 6 years ago
    Sold Out!
    480 Mins

    If you are an experienced developer who hasn't had a chance to look at the Swift Programming Language, this workshop is for you.

    We'll look at language fundamentals: functions, variables and constants, collections, control-flow, optionals, generics, and closures. We'll look at Swift classes, objects, protocols, structs, modules, and enumerations.

    We'll use Swift Playgrounds to explore some of these aspects of the language including the latest additions to Swift 2.0.

    Swift is scheduled to be open sourced this fall. You will be able to use it for development on Linux and OS X.

    There will be several hands-on portions of this workshop. To fully participate in those, you must have the Xcode 7 beta installed on your Mac.