{"id":15673978,"url":"https://github.com/sshine/rfun","last_synced_at":"2026-01-31T19:34:13.690Z","repository":{"id":9299958,"uuid":"11137559","full_name":"sshine/rfun","owner":"sshine","description":"A subset of RFUN, a reversible functional language with algebraic types","archived":false,"fork":false,"pushed_at":"2013-09-05T12:07:38.000Z","size":172,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-13T16:08:49.545Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Logos","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sshine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-07-02T23:26:53.000Z","updated_at":"2018-01-02T21:48:13.000Z","dependencies_parsed_at":"2022-09-02T21:11:26.908Z","dependency_job_id":null,"html_url":"https://github.com/sshine/rfun","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sshine/rfun","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sshine%2Frfun","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sshine%2Frfun/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sshine%2Frfun/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sshine%2Frfun/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sshine","download_url":"https://codeload.github.com/sshine/rfun/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sshine%2Frfun/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28951443,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T18:30:42.805Z","status":"ssl_error","status_checked_at":"2026-01-31T18:30:19.593Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2024-10-03T15:43:18.698Z","updated_at":"2026-01-31T19:34:13.674Z","avatar_url":"https://github.com/sshine.png","language":"Logos","funding_links":[],"categories":[],"sub_categories":[],"readme":"rfun\n====\n\nA compiler for a subset of RFUN, a reversible functional language with algebraic\ntypes.  It supports functions, the two datatype constructors Nil/0 and Cons/2,\ngiving way to construct binary trees, let-bindings and case-of expressions that\nmatch only one level deep using one case (for correct programs) or two cases (in\neither order).  RFUN's first-match policy is upheld by simplicity.\n\nThe subset is discussed in the article: ``Reversible representation and\nmanipulation of constructor terms in the heap'' by Holger Bock Axelsen and\nRobert Glück, 2013.  The present compiler is an attempt at implementing most of\nthis subset.\n\nThe compiler currently skips type checking and emphasis has been put on code\ngeneration.  The code generator targets PISA, described in ``The Pendulum\ninstruction set architecture'', an instruction set summary by Holger Bock\nAxelsen from 2006.\n\nAs an aid, inspiration was drawn from the article, ``Clean translation of an\nimperative reversible programming language'' by Holger Bock Axelsen, 2011, in\nparticular the overall program structure and calling convention code is copied,\nand translation of conditionals has been repurposed.\n\nWriting this compiler has been an experience in reversible machine code and\nstructuring a compiler from scratch using monad transformers.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsshine%2Frfun","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsshine%2Frfun","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsshine%2Frfun/lists"}