{"id":21100493,"url":"https://github.com/mikpe/erlscheme","last_synced_at":"2025-05-16T17:30:28.902Z","repository":{"id":18236877,"uuid":"21382329","full_name":"mikpe/erlscheme","owner":"mikpe","description":"An implementation of the Scheme programming language for the Erlang/OTP VM.","archived":false,"fork":false,"pushed_at":"2025-04-18T11:59:30.000Z","size":470,"stargazers_count":14,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-19T01:06:56.164Z","etag":null,"topics":["erlang","scheme"],"latest_commit_sha":null,"homepage":"","language":"Erlang","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mikpe.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,"zenodo":null}},"created_at":"2014-07-01T09:34:20.000Z","updated_at":"2025-04-18T11:59:28.000Z","dependencies_parsed_at":"2025-03-29T19:22:27.013Z","dependency_job_id":"ce44db74-13c7-4f20-856c-9d125b488ee0","html_url":"https://github.com/mikpe/erlscheme","commit_stats":null,"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikpe%2Ferlscheme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikpe%2Ferlscheme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikpe%2Ferlscheme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikpe%2Ferlscheme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mikpe","download_url":"https://codeload.github.com/mikpe/erlscheme/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254576299,"owners_count":22094332,"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":["erlang","scheme"],"created_at":"2024-11-19T23:13:17.284Z","updated_at":"2025-05-16T17:30:28.897Z","avatar_url":"https://github.com/mikpe.png","language":"Erlang","funding_links":[],"categories":[],"sub_categories":[],"readme":"   Copyright 2014-2025 Mikael Pettersson\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\nErlScheme\n=========\n\nErlScheme is an implementation of the Scheme programming language for the\nErlang/OTP virtual machine.\n\nErlScheme aims for Scheme R7RS compatibility, with extensions for Erlang\ninteroperability.  ErlScheme added features include:\n\n- Calls to Erlang code.\n\n  * (M:F A1 ... An) calls function F of arity n exported from module M\n\n  * (lambda M:F/A) evaluates to function F of arity A exported from module M\n\n- Separately-compiled modules.  A module like\n\n        (module meaning)\n        (export (/ life 0)) ; or (export life/0)\n        (define (life) 42)\n\n    in a file \"meaning.scm\" can be compiled to \"meaning.beam\", and then called\n    from ErlScheme as (meaning:life) or from Erlang as meaning:life().\n\n- Erlang-like exception handling:\n\n        (try Expr\n          (of Var Body)\n          (catch EVar Handler)\n          (after After))\n\n    ErlScheme exceptions have termination semantics, not resumption semantics\n    as specified by R7RS.\n\n- Erlang-like case expressions and pattern matching:\n\n        (case Expr\n          ('x 'got_an_x) ; quote symbols to treat them as literals\n          (y (when Guard) Body..) ; unquoted symbols are variables\n          (_ Default))\n\n    Patterns are datums where symbols denote variables if unquoted, and literals\n    when quoted. References to bound variables are equality constraints, as in\n    Erlang.\n\n    Scheme's original (case ...) expressions are not supported. They can be\n    supported via a macro if so desired. (This author finds them pointless.)\n\n- Erlang processes and message passing.\n\nSome Scheme feature are not supported:\n\n- No mutable aggregate data structures.  This means no set-car!, string-set!,\n  vector-set!, or similar procedures.  This is due to inherent limitations\n  in the Erlang/OTP VM.\n\n- No call/cc.  Supporting this would require a CPS-transform, which would\n  make interoperability with Erlang code difficult.  Note that the Erlang\n  VM supports processes and exceptions, so call/cc is not needed to implement\n  those features for ErlScheme.\n\n- No \"full numeric tower\".  This is mainly due to the Erlang/OTP VM only\n  supporting integers (fixnums and bignums) and flonums.\n\n- No variadic functions.  The Erlang/OTP VM does not support this feature,\n  and emulating it requires changing calling conventions which ends up making\n  interoperability with Erlang code more difficult.\n\n- No resumption from exception handlers.  Like call/cc, supporting this would\n  require a CPS-transform, making interoperability with Erlang code difficult.\n\nErlScheme is a Work In Progress\n===============================\n\nErlScheme is far from finished, so here is an incomplete list of known\nomissions and planned extensions:\n\nOmissions:\n- Most of the Scheme standard bindings are not yet implemented.\n- The R6RS/R7RS library system is not implemented, and may never be.\n- No documentation.\n- The macro / syntax system is old-fashioned and primitive.\n\nPlanned extensions:\n- Write more of the system in ErlScheme itself.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikpe%2Ferlscheme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmikpe%2Ferlscheme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikpe%2Ferlscheme/lists"}