{"id":15401448,"url":"https://github.com/snowy1803/suffix-lang","last_synced_at":"2026-07-13T11:31:44.288Z","repository":{"id":82539133,"uuid":"561542325","full_name":"Snowy1803/suffix-lang","owner":"Snowy1803","description":"A type-safe functional programming language using Reverse Polish Notation","archived":false,"fork":false,"pushed_at":"2023-03-18T18:17:43.000Z","size":369,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-27T18:44:18.527Z","etag":null,"topics":["compiler","functional-programming","language","programming-language","suffix-lang"],"latest_commit_sha":null,"homepage":"","language":"Swift","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/Snowy1803.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-03T23:18:07.000Z","updated_at":"2023-01-27T00:40:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"467a75ce-73ee-4742-9eba-5c296366b1c7","html_url":"https://github.com/Snowy1803/suffix-lang","commit_stats":{"total_commits":122,"total_committers":1,"mean_commits":122.0,"dds":0.0,"last_synced_commit":"344aace390d199dfaaed25c0553ea0b500503c56"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Snowy1803/suffix-lang","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Snowy1803%2Fsuffix-lang","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Snowy1803%2Fsuffix-lang/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Snowy1803%2Fsuffix-lang/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Snowy1803%2Fsuffix-lang/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Snowy1803","download_url":"https://codeload.github.com/Snowy1803/suffix-lang/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Snowy1803%2Fsuffix-lang/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35421716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-13T02:00:06.543Z","response_time":119,"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":["compiler","functional-programming","language","programming-language","suffix-lang"],"created_at":"2024-10-01T15:58:23.109Z","updated_at":"2026-07-13T11:31:44.270Z","avatar_url":"https://github.com/Snowy1803.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# The Suffix Programming Language\n\nA type-safe functional programming language using Reverse Polish Notation.\n\n## Concepts\n\nA Suffix program is made of top-level instructions. The two most important instructions are `\u0026` (push) and `.` (call): `\u00262 \u00263 .+` calls the `+` function with arguments `2` and `3`. Suffix uses RPN, so it has a stack you can push values to. Functions take a certain amount of stack elements, and push new ones instead.\n\nContrary to most RPN languages, Suffix is type-safe: all function declare how much values they take, their type, and what they return. As such, the value stack only exists at compilation.\n\nThere are no variables and no loops, only constants (called bindings) and recursion.\n\nIdentifiers can contain many characters, including spaces. Types and values are in a different name space.\n\nThe different instructions are:\n - `\u0026` push a value to the stack\n - `.` call a function by name\n - `\u003e` pop a value and bind it a name: `\u00262 \u003e two` means `two` now refers to the value `2`\n - `func` declare a function\n - `record` declare a record (an immutable data structure)\n\n## Driver\n\nTo run the driver, build the `suffix` command line tool with `swift build --product suffix`.\n\nThe different commands are:\n - `suffix lex \u003cfile.suffix\u003e`: Prints a debug list of tokens from the lexer\n - `suffix parse \u003cfile.suffix\u003e`: Prints a debug AST view from the parser\n - more to come...\n\n## Targets\n\n - `SuffixLang` contains the lexer, the parser, and the AST structs\n - `Sema` (Coming Soon) contains the type checker\n - `IRGen` (Coming Soon) contains the LLVM IR code generator\n - `Driver` contains the command line tool\n - `LSP` (Coming Soon) contains the LSP server for integration with IDEs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnowy1803%2Fsuffix-lang","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsnowy1803%2Fsuffix-lang","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnowy1803%2Fsuffix-lang/lists"}