{"id":21075075,"url":"https://github.com/hackworthltd/primer","last_synced_at":"2025-05-16T06:31:44.113Z","repository":{"id":167408473,"uuid":"407342324","full_name":"hackworthltd/primer","owner":"hackworthltd","description":"A pedagogical functional programming language.","archived":false,"fork":false,"pushed_at":"2024-09-14T09:42:08.000Z","size":6528,"stargazers_count":14,"open_issues_count":276,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-09-14T20:23:55.968Z","etag":null,"topics":["education","functional-programming","primer","programming","programming-language"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hackworthltd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-16T23:25:31.000Z","updated_at":"2024-09-14T09:41:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"a1aa8abe-8526-4647-92cb-52d3fa058dff","html_url":"https://github.com/hackworthltd/primer","commit_stats":null,"previous_names":["hackworthltd/primer"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackworthltd%2Fprimer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackworthltd%2Fprimer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackworthltd%2Fprimer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackworthltd%2Fprimer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hackworthltd","download_url":"https://codeload.github.com/hackworthltd/primer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225411824,"owners_count":17470302,"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":["education","functional-programming","primer","programming","programming-language"],"created_at":"2024-11-19T19:19:27.597Z","updated_at":"2025-05-16T06:31:44.095Z","avatar_url":"https://github.com/hackworthltd.png","language":"Haskell","readme":"[![Build status](https://badge.buildkite.com/210c4de83d47809721c2b4269b1d00393f3fa24c202abd4d45.svg?branch=main)](https://buildkite.com/hackworthltd/primer-ci)\n[![Benchmarks](https://github.com/hackworthltd/primer/actions/workflows/benchmark-action.yaml/badge.svg?branch=main)](https://benchmarks.primer.dev)\n\n# Primer\n\nPrimer is a pedagogical functional programming language. This\nrepository contains Haskell implementations of:\n\n* the core language;\n\n* database adapters for storing Primer programs in a relational\n  database; and\n\n* a web-based frontend for editing and running Primer programs.\n\nAll projects are licensed under the terms of [version 3 (or later) of\nthe GNU Affero General Public License](COPYING), and can be freely\ncopied, modified, and distributed, so long as the license is\npreserved.\n\n# Important caveats\n\nBoth this implementation of the Primer programming language and the\nlanguage specification itself are still under heavy development. If\nyou use this implementation, you should expect lots of breaking\nchanges until we reach a [1.0\nrelease](https://github.com/hackworthltd/primer/milestone/4).\n\nFor a very rough roadmap, see our [project\nmilestones](https://github.com/hackworthltd/primer/milestones). Please\nnote that we don't currently have any accurate time estimates for when\nwe expect these milestones to be reached, and the milestones are\nsubject to change.\n\n**Please also read the following important caveats about the current state of the project**:\n\n* The current implementation of the step evaluator is very slow.\n  Running very large programs, or even small programs that generate\n  many reduction steps, is not practical at this time. Primer now also\n  features an interpreter which is up to a few orders of magnitude\n  faster than the step evaluator, but we lose the ability to step\n  through programs redex-at-a-time as we can with the step evaluator.\n  We plan to do future research to attempt to combine the two\n  approaches somehow.\n\n* The Haskell API and database schema are all very unstable, and\n  guaranteed to change in compatibility-breaking ways before we reach\n  a 1.0 project milestone.\n\n* The language's semantics are still not fully baked, and there may be\n  defects in its design and/or implementation, so existing Primer\n  programs will probably break from time to time, with no guaranteed\n  forward/backward compatibility path. In other words, you may lose\n  work due to incompatibilities between old Primer programs and new\n  releases of the language. Once we reach version 1.0, we'll only make\n  breaking changes when absolutely necessary, and do our best to\n  provide backward compatibility with existing programs, and/or ways\n  to migrate old programs to the new semantics.\n\n* At the moment, Primer is a pure functional programming language,\n  with no effects system. This means, for example, it's not currently\n  possible to [draw animated cats](https://scratch.mit.edu) using\n  Primer. We're currently undecided on whether to add an effects\n  system to version 2.0 of the language, or to eschew language-level\n  effects entirely in favor of a different approach more suited to\n  novices.\n\n* We've yet to do any rigorous testing of Primer with students, and\n  none at all in classrooms. Primer may turn out not be an effective\n  way to teach functional programming to novices! That said, if you're\n  an educator and you'd like to know more about the limited testing we\n  *have* done to date, please reach out to us.\n\n# Contributing\n\nWe welcome contributions from the community! Please read our\n[contributing guide](CONTRIBUTING.md) if you think you'd like to help.\n\nWe also provide a comprehensive [development\nguide](docs/development-guide-toc.md) for anyone who'd like to build\nand run the project locally.\n\n# Third-party licenses\n\nSome third-party assets that we distribute together with this\nproject's source code (e.g., open source fonts) are licensed\nseparately from the source code. For each such asset, there's a\ncorresponding license file in the `licenses` subdirectory of the\nproject.\n\nWe have also \"vendored\" some source code from third-party libraries;\ni.e., we have included a few third-party source code files directly in\nthis project, rather than linking to them as a pre-built dependency.\nWhen this is the case, the source files will include their license and\ncopyright notice directly in the source file.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackworthltd%2Fprimer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhackworthltd%2Fprimer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackworthltd%2Fprimer/lists"}