{"id":20579777,"url":"https://github.com/arcj137442/julisp","last_synced_at":"2025-07-23T20:04:29.687Z","repository":{"id":196525394,"uuid":"696305003","full_name":"ARCJ137442/JuLISP","owner":"ARCJ137442","description":"A LISP dialect based on Julia | 一种基于Julia的LISP方言","archived":false,"fork":false,"pushed_at":"2023-09-27T07:39:43.000Z","size":42,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-06T11:47:46.772Z","etag":null,"topics":["julia","lisp","lisp-interpreter","repl"],"latest_commit_sha":null,"homepage":"","language":"Julia","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/ARCJ137442.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":"2023-09-25T13:45:37.000Z","updated_at":"2023-09-26T18:00:03.000Z","dependencies_parsed_at":"2025-01-16T22:26:22.260Z","dependency_job_id":"b95e6fdc-1594-4c1b-9b3b-f18c850921b4","html_url":"https://github.com/ARCJ137442/JuLISP","commit_stats":null,"previous_names":["arcj137442/julisp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ARCJ137442/JuLISP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARCJ137442%2FJuLISP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARCJ137442%2FJuLISP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARCJ137442%2FJuLISP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARCJ137442%2FJuLISP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ARCJ137442","download_url":"https://codeload.github.com/ARCJ137442/JuLISP/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARCJ137442%2FJuLISP/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266738673,"owners_count":23976442,"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","status":"online","status_checked_at":"2025-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"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":["julia","lisp","lisp-interpreter","repl"],"created_at":"2024-11-16T06:18:35.008Z","updated_at":"2025-07-23T20:04:29.662Z","avatar_url":"https://github.com/ARCJ137442.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JuLISP\n\n「让写Julia如同写LISP一般」\n\n一个（非常简单的）支持Julia Expr与S-表达式互转，从而可用LISP风格书写Julia代码的「LISP风Julia」解释器。\n\n## 特性\n\n- 使用LISP的风格书写Julia AST，并即时解释执行\n- 使用LISP风格的单行注释`; ...`，附加更易用的多行注释`# ... #`\n- 支持`include`函数，可直接读取JuLISP文件并执行其内代码\n- 拥有一个简单的REPL，可以直接运行`REPL.jl`以启动交互式解释器\n\n## 作者的话\n\n这是一个非常小的项目。\n\n写这个项目主要是为了复习Julia的宏功能，以及LISP风格的代码书写。\n\n以及，最近阅读《黑客与画家》时，作者在书中提到，LISP是一种「最优雅的编程语言」——实际上，对我个人而言，最吸引我的并非其语法，而是其特性与背后的思想。\n\n援引其中提到的「格林斯潘第十定律」（Greenspun's Tenth Rule）：\n\u003e 任何C或Fortran程序复杂到一定程度之后，都会包含一个临时开发的、只有一半功能的、不完全符合规格的、到处都是bug的、运行速度很慢的Common Lisp实现。\n\n相比于C、C++和Java，我想Julia并不用担心这一点——Julia在很大一方面继承了LISP的各种思想（比如「数据⇔程序」「动态解释/静态编译执行均可」……）\n\n但就在此时，心中闪念一系列想法：\n\n\u003e 既然Julia在「元编程」的思想上与LISP这么相似，为何不试试把用LISP的风格表达Julia的AST呢？\n\u003e\n\u003e 既然能直接表达Julia的AST，那不就能直接解释执行了么？\n\u003e\n\u003e 既然都直接能解释执行了，那我岂不是新发明了一种LISP方言？\n\n「发明新事物，把想象变作现实」本身是我一直感兴趣并追求的，「发明新语言」也不例外。\n于是，一不做二不休，这个项目就开始了。\n\n本项目的第一版，为数小时仓促写就，唯一的「JuLISP」模块中只有「直接解释执行的`run_julisp`」「读取文件并执行其内代码的`include_julisp`」以及相应的几个字符串宏——功能实现略显粗糙，只是「应该能用」的水平。\n\n但随着后续对LISP的了解，以及对Julia AST对象的逐渐熟络，这个项目也渐渐有了第二版。\n现在的版本是在开发的第二天写成的，基本支持了所有Julia中的语言特性，并支持LISP风格的分号「;」单行注释（同时使用井号「#」实现了轻量级的多行注释）；进一步地，这个版本已经有了一个基本可用、易用的REPL，可以交互式输入并即时解释执行代码——这使得它更像一门LISP方言了。\n\n虽说这只是自己研究需要+突发奇想做出的一个「实验产品」，但「创造了一门语言」足以让我觉得「这样的项目是有新意的」——至少也有满满的成就感。\n\n註：本项目在写就（时间：2023-09-25 21:43:45）之时，并未在网上查阅任何有关「LISP风Julia」的信息——一切均为原创，如有雷同，纯属巧合。\n\n若觉得这个项目有魅力，或者有什么问题，欢迎提Issues。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farcj137442%2Fjulisp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farcj137442%2Fjulisp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farcj137442%2Fjulisp/lists"}