package links
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=1135cc3e53d4b30fd3d905c93c3f20b97635f8cf9a3532147e29c2362c9d8ff3
sha512=7dee3aa923eb49fc2c10208c609a6bddcdb57260f81917967b2fb9db01eee1267bb8e6b915b4722299b6ee14dcf04b0ba60127037a3a468b9955242401ac2db1
Description
Links is a functional programming language designed to make web programming easier.
Published: 21 Nov 2023
README
Links: Linking Theory to Practice for the Web
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
Dependencies (23)
-
rdf_lwt
>= "0.13.0"
-
calendar
>= "2.0.4"
-
ppx_sexp_conv
>= "v0.16.0"
-
menhir
>= "20210419"
- ocamlfind
- result
- safepass
- websocket-lwt-unix
- websocket
-
tls
< "1.0.0"
- uri
- conduit-lwt-unix
- cohttp-lwt-unix
- cohttp-lwt
- cohttp
-
lwt
>= "5.0.0"
- ANSITerminal
- linenoise
- base64
-
ppx_deriving_yojson
>= "3.3"
- ppx_deriving
-
dune
>= "2.7"
-
ocaml
>= "4.14.0"
Dev Dependencies
None
Used by (3)
-
links-mysql
>= "0.9.8"
-
links-postgresql
>= "0.9.8"
-
links-sqlite3
>= "0.9.8"
Conflicts
None