{"id":15540268,"url":"https://github.com/rm-hull/yalix","last_synced_at":"2025-07-17T06:03:48.334Z","repository":{"id":44392483,"uuid":"20813432","full_name":"rm-hull/yalix","owner":"rm-hull","description":"Seven LISPs in seven languages","archived":false,"fork":false,"pushed_at":"2023-12-03T19:03:52.000Z","size":627,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-23T16:49:57.044Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rm-hull.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2014-06-13T18:17:08.000Z","updated_at":"2022-07-17T13:51:33.000Z","dependencies_parsed_at":"2025-03-06T01:42:07.097Z","dependency_job_id":null,"html_url":"https://github.com/rm-hull/yalix","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rm-hull/yalix","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rm-hull%2Fyalix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rm-hull%2Fyalix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rm-hull%2Fyalix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rm-hull%2Fyalix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rm-hull","download_url":"https://codeload.github.com/rm-hull/yalix/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rm-hull%2Fyalix/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265571025,"owners_count":23789998,"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":[],"created_at":"2024-10-02T12:13:24.184Z","updated_at":"2025-07-17T06:03:48.316Z","avatar_url":"https://github.com/rm-hull.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Yalix\n\n\u003e One night, around 3am, I was watching an infomercial for a product\n\u003e claiming to restore men's hair. As I watched the story of one\n\u003e formerly-bald individual, I became overwhelmed with joy. \"At last!\",\n\u003e my brain said to itself, \"This man has gotten the love and success\n\u003e he deserves! What an incredible product this is, giving hope to the\n\u003e hopeless!\"\n\u003e\n\u003e Throughout the intervening years I've found myself wondering if I\n\u003e could somehow recreate the emotional abandon and appreciation for\n\u003e life induced by chronic sleep deprivation. The ultimate solution\n\u003e would be some kind of potion — a couple quaffs to unleash my inner\n\u003e Richard Simmons, but not for too long.\n\n— _Clojure for the Brave and True_\n\nYalix is a **Y**et **a**nother **L**ISP **i**nterpreter **i**n **X**, where X\nis a different programming language. The dialect it mostly\nresembles is that of [Racket](http://racket-lang.org/) but borrows\nideas from [Clojure](http://clojure.org/) as well. Yalix is by far\nless feature packed than both of the above; it is an experiment to\n(a) learn about implementing parsers, interpreters, streams and macros,\nand then (b) re-implementing those features in other computer\nlanguages I am not particularly familiar with.\n\nThe long term aim of this project is to firstly build a featue rich\nimplementation in Python which is easy to read, and easy to extend.\nThe overriding intention is pedagogical rather than optimising for\nperformance. Secondly, to re-implement Yalix in a number of other\nprogramming langugaes, including itself!\n\n### Current Status\n\nSee the sub project directories for implementation specific details\n\n## References\n\n* http://www.ccs.neu.edu/home/matthias/BTLS/\n* http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/\n* http://courses.cs.washington.edu/courses/cse341/11sp/\n* http://racket-lang.org/\n* http://www.buildyourownlisp.com/\n\n## (Y F) = (F (Y F))\n\n![screencap](https://raw.github.com/rm-hull/yalix/master/doc/costanza.png)\n\n\u003e \"... but what LISP is, is the fixed point of the process that says if I\n\u003e knew what LISP was, and substituted it in for eval and apply and so on,\n\u003e on the right hand side of all those recusion equations, then if it was\n\u003e a real good LISP, it was a real one, then the left hand side would also\n\u003e be LISP. So I made sense of that definition. Now, whether or not there's\n\u003e an answer, isn't so obvious. I can't attack that.\n\n— _George Costanza on the nature of LISP._\n\n## Contributing\n\nYou're more than welcome to pitch in, there are loads of interesting\nfeatures I'd like to implement (as well as a few bugs to squash) - take a\nlook at the TODO list and the references above.\n\nIf there's any you feel you'd specifically like to have a go at, create an\n[issue](https://github.com/rm-hull/yallic/issues/new) and I'll back-fill it\nwith some background information to get you going, and it can then be used as\nthe discussion focus.\n\nFork the repo, create a feature branch and once the feature is complete, submit\na pull request. Also, please try and add some tests where practical (demo's and\nexamples even more so) and keep this README up-to-date, and make sure you've pulled\nfrom origin master before doing a PR.\n\n## License\n\nThe MIT License (MIT)\n\nCopyright (c) 2014 Richard Hull\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frm-hull%2Fyalix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frm-hull%2Fyalix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frm-hull%2Fyalix/lists"}