{"id":13782902,"url":"https://github.com/joefarebrother/scheme","last_synced_at":"2025-05-11T16:33:32.016Z","repository":{"id":12687888,"uuid":"15360106","full_name":"joefarebrother/scheme","owner":"joefarebrother","description":"A scheme interpreter and compiler","archived":false,"fork":false,"pushed_at":"2014-12-10T18:34:52.000Z","size":328,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-08-03T18:16:57.874Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","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/joefarebrother.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-12-21T14:30:27.000Z","updated_at":"2018-03-11T22:53:00.000Z","dependencies_parsed_at":"2022-09-02T11:02:09.281Z","dependency_job_id":null,"html_url":"https://github.com/joefarebrother/scheme","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joefarebrother%2Fscheme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joefarebrother%2Fscheme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joefarebrother%2Fscheme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joefarebrother%2Fscheme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joefarebrother","download_url":"https://codeload.github.com/joefarebrother/scheme/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253596027,"owners_count":21933496,"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-08-03T18:01:47.597Z","updated_at":"2025-05-11T16:33:31.775Z","avatar_url":"https://github.com/joefarebrother.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"scheme\n======\n\n(what will be) A scheme compiler\n\nThe bootstrap directory contains the following:\nbootstrap.c is a bootstrap interpreter for scheme, intended for bootstraping compile/compile.scm (currently non-existant because git doeesn't track empty directories).\nprims.c contains the primitive procedures for the bootstrapper\nlib.scm implements a standard library for the bootstrapper to run.\n\nTo test, type at a terminal:\n\n```shell\n$ make\n$ ./bootstrap/bootstrap\n\u0026gt; (load \"bootstrap/lib.scm\")\n```\n\nprims.c currently defines:\n\n- char-\u003einteger\n- integer-\u003echar\n- number-\u003estring\n- string-\u003enumber\n- symbol-\u003estring\n- string-\u003esymbol\n- boolean?\n- char?\n- integer?\n- pair?\n- symbol?\n- procedure?\n- string?\n- port?\n- +\n- -\n- *\n- quotient\n- remainder\n- =\n- \u003c\n- \u003e\n- cons\n- car\n- cdr\n- set-car!\n- set-cdr!\n- eq?\n- string-append\n- apply\n- eval\n- exit\n- interaction-enviroment\n- enviroment\n- null-enviroment\n- open-input-file\n- read-char\n- unread-char (non-standard) - (unread-char char port) pushes a character back to an input port\n- eof-object?\n- close-input-file\n- read\n- load\n- open-output-file (takes a non-standard optional second argument a symbol indicating what to di if it already exists: overwrite or append. Default is overwrite.)\n- close-output-file\n- write-char\n- write\n- display\n- error\n- string-append\n- system (non-standard) - excecutes shell code\n- gensym\n\n\nbootstrap.c currently recognises the following special forms:\n\n- if\n- set!\n- define\n- quote\n- lambda\n- begin\n- cond, including =\u003e\n- let\n- and\n- or\n- declare (non-standard) - ignored by the interpreter, the compiler will use them to aid compilation\n\nbootstrap/lib.scm defines:\n\n- number?\n- list\n- not\n- append (varadic version)\n- length\n- reverse\n- vector? (always false)\n- range\n- map\n- filter\n- foldl\n- foldr\n- accumulate\n- all c...r functions\n- memq\n- memv\n\nThe following (non-standard) variable is availiable on startup:\n\n - args - command line arguments\n\nCurrently tested on Ubuntu only.\nSHOULD work on all OSs currently (though untested) but I only plan to support unix.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoefarebrother%2Fscheme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoefarebrother%2Fscheme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoefarebrother%2Fscheme/lists"}