{"id":17258802,"url":"https://github.com/cowboy8625/snow-lang","last_synced_at":"2025-04-14T05:32:22.309Z","repository":{"id":40472925,"uuid":"463658006","full_name":"cowboy8625/snow-lang","owner":"cowboy8625","description":"A functional programming language","archived":false,"fork":false,"pushed_at":"2024-08-20T03:25:58.000Z","size":8601,"stargazers_count":12,"open_issues_count":9,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-27T19:52:24.585Z","etag":null,"topics":["compiler","functional","functional-programming","language","programming-language","snow-lang"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cowboy8625.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2022-02-25T19:50:55.000Z","updated_at":"2025-03-20T04:45:16.000Z","dependencies_parsed_at":"2023-10-11T02:02:58.467Z","dependency_job_id":"60b9881e-15bd-4c66-b501-0a066c51f27e","html_url":"https://github.com/cowboy8625/snow-lang","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/cowboy8625%2Fsnow-lang","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cowboy8625%2Fsnow-lang/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cowboy8625%2Fsnow-lang/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cowboy8625%2Fsnow-lang/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cowboy8625","download_url":"https://codeload.github.com/cowboy8625/snow-lang/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248826816,"owners_count":21167757,"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":["compiler","functional","functional-programming","language","programming-language","snow-lang"],"created_at":"2024-10-15T07:22:10.736Z","updated_at":"2025-04-14T05:32:21.725Z","avatar_url":"https://github.com/cowboy8625.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Snow Lang\n\nSnow is an emerging programming language that is firmly rooted in the principles of pure functional programming, drawing substantial inspiration from notable predecessors such as Haskell and OCaml. This heritage endows Snow with a robust foundation in functional programming paradigms, providing a rich set of expressive constructs for the development of concise and resilient software solutions.\n\n**Syntax Enhancement on the Horizon:** Presently, Snow utilizes semicolons as delimiters to separate statements within its code. However, it is essential to recognize that the language is on a dynamic development trajectory. A significant refinement of the syntax is on the horizon, wherein the requirement for semicolons will be deprecated. Future usage of semicolons will result in syntax errors. This pivotal change aligns with Snow's unwavering commitment to cultivating a more intuitive and elegant syntax, which, in turn, promises an enhanced and more user-friendly programming experience.\n\n**Growing Pains and Potential:** As it stands, Snow is in its infancy of development. As is often the case with evolving software projects, the presence of potential bugs is a part of the journey. Users are encouraged to engage with the language with patience and the understanding that ongoing improvements and debugging endeavors are essential components of Snow's progress toward maturity.\n\n**The Current Landscape:** At its current stage, Snow is equipped with a tree-walking interpreter, enabling the execution of its code. Nonetheless, the development roadmap for Snow brims with exciting prospects. The language is poised for potential transformation, with plans to become a compiled language or explore the utilization of a virtual machine in forthcoming iterations. These strategic directions hold the promise of enhanced performance, further extending Snow's versatility as a tool for software development.\n\n## Getting Started\n\nWhile Snow is under active development, an interactive REPL (Read-Eval-Print Loop) is available for users to experiment with the language. To get started, follow these commands:\n\n```sh\n$ git clone http://github.com/cowboy8625/snow-lang.git\n$ cd snow-lang\n$ cargo run\n```\n\nThis will place you in a REPL where you can explore the language interactively. If you wish to work with code from a file, use the following command:\n\n```sh\n$ git clone http://github.com/cowboy8625/snow-lang.git\n$ cd snow-lang\n$ cargo run -- file_name.snow\n```\n\n## Examples\n\nSample code can be found in the `samples` folder. Here are a few illustrative examples:\n\n- [hello_world](./samples/hello_world.snow)\n- [rule110](./samples/rule110.snow)\n- [std](./samples/std.snow)\n\n## Syntax\n\n**Functions:**\n\n```haskell\nmax x y\n    : Int -\u003e Int -\u003e Int\n    = if x \u003e y then x else y\n\nmin x y\n    : Int -\u003e Int -\u003e Int\n    = if x \u003c y then x else y\n\nclamp input low high\n    : Int -\u003e Int -\u003e Int -\u003e Int\n    = max low (min input high)\n\nis_digit c\n    : Char -\u003e Bool\n    = c \u003e= '0' and c \u003c= '9'\n```\n\n##### **Experimental:**\n\n**Enums:**\n\n```haskell\nenum Option a\n    = Some a\n    | None\n\nOption.map f\n    = match self on\n    | Some x -\u003e Some (f x)\n    | None -\u003e None\n\nenum Bool\n    = True\n    | False\n```\n\n**Custom Operators:**\n\nSnow allows the definition of custom operators to match the specific needs of your code:\n\n```haskell\n-- Prefix Operator\n`!` x\n    : a -\u003e Bool\n    = core::not x True False\n\n-- Infix Operator\n`==` x y\n    : a -\u003e a -\u003e Bool\n    = core::equal x y Bool::True Bool::False\n\n`\u003c=` x y\n    : a -\u003e a -\u003e Bool\n    = core::less_equal x y Bool::True Bool::False\n\n`\u003e=` x y\n    : a -\u003e a -\u003e Bool\n    = core::greater_equal x y Bool::True Bool::False\n\n`\u003e` x y\n    : a -\u003e a -\u003e Bool\n    = core::greater x y Bool::True Bool::False\n\n`\u003c` x y\n    : a -\u003e a -\u003e Bool\n    = core::less x y Bool::True Bool::False\n```\n\nFeel free to explore and experiment with Snow, and stay tuned for its evolving features and capabilities.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcowboy8625%2Fsnow-lang","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcowboy8625%2Fsnow-lang","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcowboy8625%2Fsnow-lang/lists"}