{"id":23661588,"url":"https://github.com/brendanberg/l","last_synced_at":"2025-08-20T21:06:01.005Z","repository":{"id":7562015,"uuid":"2207394","full_name":"brendanberg/L","owner":"brendanberg","description":"The L Programming Language","archived":false,"fork":false,"pushed_at":"2023-01-07T02:29:40.000Z","size":963,"stargazers_count":18,"open_issues_count":16,"forks_count":1,"subscribers_count":3,"default_branch":"node","last_synced_at":"2024-04-09T21:50:39.496Z","etag":null,"topics":["concurrency-primatives","functional-languages","gradual-typing","pattern-matching","programming-language"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brendanberg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-08-15T00:15:02.000Z","updated_at":"2023-09-12T20:38:02.000Z","dependencies_parsed_at":"2023-01-13T14:25:48.665Z","dependency_job_id":null,"html_url":"https://github.com/brendanberg/L","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brendanberg%2FL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brendanberg%2FL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brendanberg%2FL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brendanberg%2FL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brendanberg","download_url":"https://codeload.github.com/brendanberg/L/tar.gz/refs/heads/node","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231701548,"owners_count":18413419,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["concurrency-primatives","functional-languages","gradual-typing","pattern-matching","programming-language"],"created_at":"2024-12-29T04:59:45.812Z","updated_at":"2024-12-29T04:59:46.352Z","avatar_url":"https://github.com/brendanberg.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Hello World in L][hero]\n\n![CircleCI][ci] ![GitHub release][ver]\n\n[hero]: https://raw.githubusercontent.com/brendanberg/L/node/docs/hero.jpg\n[ci]: https://circleci.com/gh/brendanberg/L/tree/node.svg?style=shield\u0026circle-token=324393cdf34c942beaf41923baccd1b78948a666\n[ver]: https://img.shields.io/github/release/brendanberg/L.svg\n\n# The L Programming Language\n\nThe __L__ Programming Language is an experimental, minimalist, multi-paradigm programming language.\nIt is designed around the radical philosophy that programs should be intelligible\nand easy to reason about.\nTherefore, the core syntax is concise but extensible\nand the language semantics can be extended through a safe macro system.\n\n## Design Goals\n\nThe __L__ Programming Language is designed to be intuitive\nand easily comprehensible after learning the foundational building blocks of the syntax.\nThe syntax is distinctive in its lack of reserved words\nand its structural simplicity.\n\nThe language's built-in concurrency semantics combined with a powerful runtime\nmake it easy to write distributed concurrent programs.\n\n## Notable Features\n\n- __Pattern Matching:__\n  One of the first surprising features of __L__ is that it does not have an assignment operator.\n  Instead, it uses a pattern matching \"bind\" operator to structurally map values onto their corresponding variables.\n  \n  ```io\n  [x, y..., z] :: [16, 25, 36, 49, 64]    # x == 16, y == [25, 36, 49], and z == 64\n  ```\n\n- __Gradual Typing:__\n  Variables are not required to explicitly state the data type of the value they contain.\n  The runtime is able to infer most of the necessary type information to run a program,\n  but when a programmer wishes to add additional constraints to an implementation,\n  they can add explicit types for compile-time checking.\n\n- __First-Class, Anonymous Functions:__\n  All functions in __L__ are first-class values.\n  A function may receive another function as an argument and return a function as a result.\n  Functions in __L__ are not named,\n  but they may be assigned to variables just like any other value.\n\n- __Algebraic Data Types:__\n  There are two main user-definable data types in __L__.\n  Unions are collections of two or more named variants.\n  The `Boolean` data type is an example of a union having variants for `True` and `False`. \n  Records are values that are collections of named fields.\n  Cartesian points, for example, could be represented as a record,\n  having values for their `x` and `y` components.\n\nThere are far more features than can be highlighted here,\nso the best place to learn more is the [Introduction to the L Programming Language][intro].\n\n## Installing L\n\nClone the repository and from within the newly created project directory,\nrun the following commands:\n\n```\nnpm install\nnpm run metal\n```\n\nThe `npm run metal` command starts the interactive shell.\n\n## Using the Interactive Shell\n\n__L__ comes with an interactive shell.\nAfter building the project, run `npm run metal` to start the shell.\nYou'll see an __L__ prompt like this:\n\n```\nThe L Programming Language, Meta-L v0.2.02\n\u003e\u003e\n```\n\nYou can type any __L__ program at the `\u003e\u003e` prompt and\nit will be evaluated and the result will be printed on the next line.\n\nIn the documentation, we include transcripts of a programmer interacting with the shell.\nShell transcripts are formatted in monospaced text,\nand anything the programmer would type is in bold.\n\nHere's a simple example of an __L__ program:\n\n\u003cpre\u003e\n\u003e\u003e \u003cb\u003e['Hello', 'world'](join: ', ') + '!'\u003c/b\u003e\n'Hello, world!'\n\u003c/pre\u003e\n\nYou've made it this far, so consider reading the [Intruduction to the L Programming Language][intro] next!\n\n[intro]: docs/introduction.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrendanberg%2Fl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrendanberg%2Fl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrendanberg%2Fl/lists"}