{"id":15289137,"url":"https://github.com/qbixxx/lambdacalculusengine","last_synced_at":"2025-05-07T04:46:21.876Z","repository":{"id":246700461,"uuid":"805872405","full_name":"qbixxx/LambdaCalculusEngine","owner":"qbixxx","description":"Lambda interpreter built in Scala. Supports CbN, CbV and Free Variables calculations.","archived":false,"fork":false,"pushed_at":"2024-10-17T11:07:41.000Z","size":166,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-07T04:46:16.133Z","etag":null,"topics":["functional","functional-programming","lambda","lambda-calculus","lambda-function","lambda-functions","sbt","scala","scala3"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qbixxx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-25T17:51:03.000Z","updated_at":"2025-01-14T15:52:40.000Z","dependencies_parsed_at":"2024-10-23T13:58:00.766Z","dependency_job_id":null,"html_url":"https://github.com/qbixxx/LambdaCalculusEngine","commit_stats":{"total_commits":84,"total_committers":4,"mean_commits":21.0,"dds":0.25,"last_synced_commit":"a2a29454503a2d787a197d621a7677c900b31269"},"previous_names":["qbixxx/lambda_calc_interpreter","qbixxx/lambdacalculusengine"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qbixxx%2FLambdaCalculusEngine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qbixxx%2FLambdaCalculusEngine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qbixxx%2FLambdaCalculusEngine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qbixxx%2FLambdaCalculusEngine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qbixxx","download_url":"https://codeload.github.com/qbixxx/LambdaCalculusEngine/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252816520,"owners_count":21808702,"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":["functional","functional-programming","lambda","lambda-calculus","lambda-function","lambda-functions","sbt","scala","scala3"],"created_at":"2024-09-30T15:59:21.687Z","updated_at":"2025-05-07T04:46:21.852Z","avatar_url":"https://github.com/qbixxx.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# λ.Lambda Calculus Engine\n![GitHub license](https://img.shields.io/github/license/qbixxx/LambdaCalculusEngine)\n![GitHub contributors](https://img.shields.io/github/contributors/qbixxx/LambdaCalculusEngine)\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/qbixxx/LambdaCalculusEngine)\n\nLambda interpreter built in Scala. Supports AST View, CbN, CbV and Free Variables calculations.\n\n## Lambda Expression Symbols available:\n- **\"λ\"**: The lambda symbol represents the beginning of an abstraction.\n- **\" \"**: The space allows for separating the argument from the function in an application.\n- **\".\"**: The dot allows for separating the argument from the body of an abstraction.\n- **\"(\"**: The left parenthesis allows for representing the beginning of an application.\n- **\")\"**:\" The right parenthesis allows for representing the end of an application.\n- **string**: Any other string, different from the ones above, will be interpreted as a variable.\n\n## Commands and syntax:\n\n1. `The Lambda expression must follow the syntax structure defined as:`\n   - `\u003cλexp\u003e ::=`\n     - `\u003cvar\u003e` #Variable\n     - `\u003cLAMBDA\u003e \u003cvar\u003e \u003cDOT\u003e \u003cλexp\u003e` #Abstraction\n     - `\u003cLPAR\u003e \u003cλexp\u003e \u003cSPACE\u003e \u003cλexp\u003e \u003cRPAR\u003e` #Application\n\n2. `set \u003creduction strategy\u003e`\n   - `set call-by-name` (default strategy)\n   - `set call-by-value`\n   - `set free-variables`\n\n3. `exit`\n\n## IO Examples:\n\n| Expression | Call-by-Name Result | Call-by-Value Result |\n| ---------- | ------------------- | -------------------- |\n| `(λx.λy.y (λx.(x x) λx.(x x)))` | `λy.y` | Infinite recursion |\n| `(λx.λx.(y x) z)` | `λx.(y x)` | `λx.(y x)` |\n| `(λx.λy.x y)` | `λy*.y` | `λy*.y` |\n| `(λy.λb.b ((λf.λb.f b) b))` |  `λb*.b*` | `λb*.b*` |\n| `(λf.(f λx.λy.x) ((λx.λy.λf.((f x) y) a) b))` | `a` | `a` |\n\n## To do:\n* Add boolean and arithmetic expressions support\n\n## Compilation:\n\nThe project uses Scala 3.3.3 and sbt.\n\nFor running the program open the sbt interpreter using:\n````shell\nsbt\n````\n- Compile with:\n````shell\ncompile\n````\n- And execute with:\n````shell\nrun\n````\n- For exiting the program:\n````shell\nexit\n````\n\n## Demo run:\n![Peek 2024-10-07 20-35](https://github.com/user-attachments/assets/3de43b57-4166-4e1e-848e-f4d420dfeaa1)\n\nNote: If you run the project on Windows, use the symbol \"/\" instead of the symbol \"λ\" as PowerShell does not support it.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqbixxx%2Flambdacalculusengine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqbixxx%2Flambdacalculusengine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqbixxx%2Flambdacalculusengine/lists"}