Skip to content

links-lang/links

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

589a7db · Jun 28, 2022
Mar 19, 2022
Jun 23, 2022
Jun 27, 2022
Feb 4, 2022
May 11, 2020
Apr 7, 2022
Oct 16, 2021
Apr 14, 2022
Nov 10, 2020
Jun 28, 2022
Aug 2, 2021
Jun 28, 2019
Feb 21, 2019
Jun 30, 2020
Jun 3, 2009
Apr 7, 2022
Sep 30, 2021
Jun 30, 2021
Jun 2, 2021
Jun 15, 2021
Sep 29, 2021
Sep 2, 2021
Feb 21, 2019
Jun 13, 2022
Jan 13, 2022
Jan 13, 2022
Jan 14, 2022
Jan 14, 2022
Mar 1, 2022
Mar 14, 2022
Jun 15, 2021
Jun 16, 2021
Oct 16, 2021

Repository files navigation

Links: Linking Theory to Practice for the Web

Build status

Links helps to build modern Ajax-style applications: those 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 specialized systems such as a relational database. To create such a program, the programmer must master a myriad of languages: the logic is written in a mixture of Java, Python, and Perl; the presentation in HTML; the GUI behavior in Javascript; and the queries are written in SQL or XQuery. There is no easy way to link these: to be sure, for example, that an HTML form or an SQL query produces the type of data that the Java code expects. This is called the impedance mismatch problem.

Links eases the impedance mismatch problem by providing a single language for all three tiers. The system is responsible for translating the code into suitable languages for each tier: for instance, translating some code into Javascript for the browser, some into Java for the server, and some into SQL to use the database.

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

FEATURES

  • Allows web programs to be written in a single programming language
  • Call-by-value functional language
  • Server / Client annotations
  • AJAX
  • Scalability through defunctionalised server continuations.
  • Statically typed database access a la Kleisli
  • Concurrent processes on the client and the server
  • Statically typed Erlang-esque message passing
  • Polymorphic records and variants
  • An effect system for supporting abstraction over database queries whilst guaranteeing that they can be efficiently compiled to SQL
  • Handlers for algebraic effects on the server-side and the client-side