Links language: Linking Theory to Practice for the Web


Links is a functional programming language designed to make web programming easier.

Links eases building interactive web applications with significant client- and server-side components.

A typical, modern web program involves many “tiers”: part of the program runs in the web browser, part runs on a web server, and part runs in back-end systems such as a relational database. To create such a program, the programmer must master a myriad of languages: the logic may be written in Java; the presentation in HTML and CSS; the GUI behavior in Javascript; and the queries in SQL. There is no easy way to link these, for example, to be sure that an HTML form or an SQL query produces the type of data that the Java code expects. This problem is called the impedance mismatch problem .

Links eases the impedance mismatch problem by providing a single language for all three tiers. The system generates code for each tier; for instance, translating some code into JavaScript for the browser, some into a bytecode for the server, and some into SQL for the database.

Links incorporates proven ideas from other programming languages: database-query support from Kleisli, web-interaction proposals from Racket, and distributed-computing support from Erlang. On top of this, it adds new web-centric features of its own.

The original Links development effort ended at the beginning of 2009. In 2014 development on Links resumed with a focus on addingsession types to Links. Other active areas of research which are driving Links development include work on adding algebraic effects and effect handlers to Links and the Skye project, which builds on Links to support scientific data curation.

Has anyone used this language? I discovered it while googling about session types and it sounds interesting. I have yet to try it out much yet


So… an isomorphic language for the front and back (but not mobile) end?

What does it offer that other ‘isomorphic’ languages don’t? Some of them (like Ruby) let you make mobile and desktop apps as well as to be used on the front and back end. Also what about scaling and concurrency etc? Will it take 20 years to get as good as Erlang/Elixir on that front?

So very similar to…



I visited the guys behind links a couple of years ago and saw a demo - it was great.

This project had a load of good ideas - but whether it will be adopted outside an academic environment is a different question. I’m sure the ideas will spread (or they should do) since web programming is a total mess - you should not have to learn JS,HTML,CSS,configuration management, web-server configuration and a database and authentication etc. (all in different languages and notations) to do virtually anything

links is a attempt to replace this mess with one language - which is a worthy goal - BUT - love of JS/CSS/… and a load of horrible build and deployments systems is so deeply ingrained that the idea of replacing all this by one language is going to be difficult to achieve.

Anyway it’s certainly something to be inspired by.