{"id":13787746,"url":"https://github.com/ditto-lang/ditto","last_synced_at":"2025-05-12T01:31:39.547Z","repository":{"id":37183295,"uuid":"465664618","full_name":"ditto-lang/ditto","owner":"ditto-lang","description":"👌 A smol functional language that targets other languages","archived":false,"fork":false,"pushed_at":"2024-01-17T10:44:57.000Z","size":1374,"stargazers_count":62,"open_issues_count":76,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-11-18T01:39:12.042Z","etag":null,"topics":["compiler","ditto","ditto-lang","functional-programming"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ditto-lang.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":"2022-03-03T10:06:06.000Z","updated_at":"2024-10-01T11:27:13.000Z","dependencies_parsed_at":"2023-10-22T15:32:19.244Z","dependency_job_id":"a5d2dbd3-d616-4e31-a187-309aefd23ace","html_url":"https://github.com/ditto-lang/ditto","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ditto-lang%2Fditto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ditto-lang%2Fditto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ditto-lang%2Fditto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ditto-lang%2Fditto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ditto-lang","download_url":"https://codeload.github.com/ditto-lang/ditto/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253659390,"owners_count":21943629,"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","ditto","ditto-lang","functional-programming"],"created_at":"2024-08-03T21:00:29.736Z","updated_at":"2025-05-12T01:31:37.998Z","avatar_url":"https://github.com/ditto-lang.png","language":"Rust","readme":"\u003ch1 align=\"center\"\u003editto\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  A small, pure functional language that targets other languages.\n  \u003cbr\u003e\u003cbr\u003e\n  \u003ca href=\"https://github.com/ditto-lang/ditto/releases/latest\"\u003e\n  \u003cimg alt=\"GitHub release (latest by date)\" src=\"https://img.shields.io/github/v/release/ditto-lang/ditto\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/ditto-lang/ditto/actions/workflows/ci.yaml\"\u003e\n    \u003cimg src=\"https://github.com/ditto-lang/ditto/actions/workflows/ci.yaml/badge.svg?branch=main\" alt=\"CI status\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/ditto-lang/ditto/actions/workflows/security-audit.yaml\"\u003e\n    \u003cimg src=\"https://github.com/ditto-lang/ditto/actions/workflows/security-audit.yaml/badge.svg?branch=main\" alt=\"Security audit status\"\u003e\n  \u003c/a\u003e\n  \u003cbr\u003e\u003cbr\u003e\n  \u003cimg src=\"./images/hello-ditto.svg\" alt=\"Hello world program in ditto\"\u003e\n  \u003cbr\u003e\n  \u003cem\u003eSyntax highlighting coming soon\u003c/em\u003e\n\u003c/p\u003e\n\n## Elevator pitch ⏱️\n\nDitto is a mashup of my favourite features from other languages.\n\nIt's functional, statically typed, and pure. But unlike many other languages in this category, it also aims to be ruthlessly simple - the syntax is small and the type system is low power.\n\nIt has no runtime of its own. There are far more mature compilers and ecosystems out there that I want to make use of, and would be naive to try and replace. So ditto can be thought of, instead, as an _alternative syntax_ for other tools.\n\nDitto is not just a compiler, it's _the_ language swiss army knife. Package management, linting, formatting, etc, are all handled by the `ditto` executable. Although this violates the [Unix philosophy](https://en.wikipedia.org/wiki/Unix_philosophy) it is my hope that it makes for a better developer experience. Because developer experience matters.\n\n## Disclaimer ⚠️\n\nDitto is still pre-v0.1 and very unstable. It is only for the curious at this stage.\n\n## Design notes\n\n- \"There should be one - and preferably only one - obvious way to do it.\" - [Zen of Python](https://peps.python.org/pep-0020/)\n- \"Small is beautiful\" - [Lua design](https://web.stanford.edu/class/ee380/Abstracts/100310-slides.pdf)\n- \"Clear is better than clever\" - [Go Proverb](https://go-proverbs.github.io/)\n  - Alternatively, \"Verbose is better than terse\" - Me\n  - Optimise for reading and understanding, not for writing.\n- Best practice over backwards compatibility 🔥\n- Anti-magic. Anti-fancy.\n- Safe by default, but _explicit_ escape hatches when you need them.\n- Embrace code generation.\n\n[carbon-screenshot]: https://carbon.now.sh/?bg=rgba%28237%2C118%2C248%2C1%29\u0026t=material\u0026wt=none\u0026l=text\u0026width=581\u0026ds=true\u0026dsyoff=20px\u0026dsblur=68px\u0026wc=true\u0026wa=false\u0026pv=56px\u0026ph=56px\u0026ln=true\u0026fl=1\u0026fm=dm\u0026fs=14px\u0026lh=133%25\u0026si=false\u0026es=1x\u0026wm=false\u0026code=module%2520Hello.Ditto%2520exports%2520%28..%29%253B%250A%250Aimport%2520%28core%29%2520String%253B%250Aimport%2520%28node-readline%29%2520Readline%2520%28question%29%253B%250Aimport%2520%28js-console%29%2520Console%253B%250A%250Atype%2520Greeting%2520%253D%2520%250A%2520%2520%257C%2520Generic%250A%2520%2520%257C%2520Name%28String%29%253B%250A%250Agreeting_to_string%2520%253D%2520%28greeting%253A%2520Greeting%29%253A%2520String%2520-%253E%2520%250A%2509match%2520greeting%2520with%250A%2509%257C%2520Generic%2520-%253E%2520%2522Hello%2520there%21%2522%250A%2509%257C%2520Name%28name%29%2520-%253E%2520%2522Hello%2520there%252C%2520%2524%257Bname%257D%21%2522%253B%250A%250Amain%2520%253D%2520do%2520%257B%250A%2520%2520response%2520%253C-%2520question%28%2522What%27s%2520your%2520name%253F%2522%29%253B%250A%2520%2520let%2520greeting%2520%253D%2520%250A%2509if%2520String.is_empty%28response%29%2520then%2520%250A%2509%2509%2520Generic%250A%2509else%250A%2509%2509Name%28response%29%250A%250A%2520%2520greeting_to_string%28greeting%29%2520%257C%253E%2520Console.log%2509%250A%257D%253B\n","funding_links":[],"categories":["Functional"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fditto-lang%2Fditto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fditto-lang%2Fditto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fditto-lang%2Fditto/lists"}