{"id":23692388,"url":"https://github.com/cristian-5/lemma","last_synced_at":"2026-05-09T06:02:53.132Z","repository":{"id":135618179,"uuid":"568487941","full_name":"cristian-5/lemma","owner":"cristian-5","description":"λ-Calculus Interpreter for Students","archived":false,"fork":false,"pushed_at":"2023-12-05T14:12:00.000Z","size":79,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-24T11:42:22.405Z","etag":null,"topics":["deno","interpreter","javascript","lambda","lambda-calculus"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/cristian-5.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-11-20T17:30:51.000Z","updated_at":"2023-10-25T23:16:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"f54d2eb9-53bb-4928-b6d0-607044be655b","html_url":"https://github.com/cristian-5/lemma","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cristian-5/lemma","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristian-5%2Flemma","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristian-5%2Flemma/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristian-5%2Flemma/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristian-5%2Flemma/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cristian-5","download_url":"https://codeload.github.com/cristian-5/lemma/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristian-5%2Flemma/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32809147,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"online","status_checked_at":"2026-05-09T02:00:06.633Z","response_time":123,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["deno","interpreter","javascript","lambda","lambda-calculus"],"created_at":"2024-12-30T03:27:23.204Z","updated_at":"2026-05-09T06:02:53.111Z","avatar_url":"https://github.com/cristian-5.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Lemma, λ-Calculus Interpreter\n\nLemma Calculator is a simple\n[λ-calculus](https://en.wikipedia.org/wiki/Lambda_calculus) interpreter\nfor students, build with ❤️, [Deno](https://deno.land/) and `javascript`.\\\nThe language is based on the λ-calculus, with the addition of constants\nand comments.\n\n\u003e ✳️ **Update**: Silly me had to rewrite this fully cause I originally\n\u003e implemented this with eager evaluation, twice. Ye pretty stupid.\n\u003e *Right now it works perfectly and is just as **lazy** as you would expect.*\n\n\n## Syntax\n\nThis is a simple example of the syntax; for a smoother experience you should\nset-up an additional input method to switch back and forth to greek letters.\n\n```\n; In λ-calculus we use functions to encode data.\n; The Church encoding system is the simplest way to encode boolean values.\n; That means that redexes (ρ) are kept to a minimum.\n\nT := λtf.t\nF := λtf.f\n\n; To create the NOT operator we use `NOT := λp.p F T`.\n; The parameter p acts as a selector, if it's T it selects F and vice versa.\n\nNOT := λp.p F T\n\nβ NOT T\nβ NOT F\n```\n\n* Lambdas are defined with `λ`, the parameters, `.` and the body.\n* Constant definitions are achieved through `\u003cCONSTANT\u003e := \u003cexpression\u003e`.\n* Only one expression per line is allowed.\n* Contstants are defined with uppercase letters.\n* Parameters are defined with a single lowercase letter.\n* Line comments start with `;` and proceed until the end of line.\n* Alpha conversion (de Bruijn) is performed with the `α` statement.\n* Beta reduction output is performed with the `β` statement.\n* Rho display of redexes is performed with the `ρ` statement.\n* Kappa numeral counter is performed with the `κ` statement.\n* Function parameters can be named through the `ƒ` symbol.\n* Unused parameters can be named through the `_` symbol.\n\n### Options\n\n```\nusage: deno run --allow-read lemma.ts \u003cfilename.lc\u003e\nflags: --help, --version, --highlight\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcristian-5%2Flemma","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcristian-5%2Flemma","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcristian-5%2Flemma/lists"}