Gibble=>Ulambda Scheme
Gibble is still the ultimate goal, but since I seem to have gone down precisely the path that I did _not_ want to go down (implementing a full Scheme), this deserves to be its own project. Oh, and Gibble is the "{General=>Graphical} Block-Based Learning Environment".master
parent
e8c9c6cdd8
commit
7e3f3f0b0a
22
README.md
22
README.md
|
@ -1,8 +1,8 @@
|
|||
# General Interactive Block-Based Learning Environment (Gibble)
|
||||
# Ulambda Scheme
|
||||
<!--
|
||||
Copyright (C) 2017 Mike Gerwitz
|
||||
Copyright (C) 2018 Mike Gerwitz
|
||||
|
||||
This file is part of Gibble.
|
||||
This file is part of Ulambda Scheme.
|
||||
|
||||
Copying and distribution of this file, with or without modification, are
|
||||
permitted in any medium without royalty provided the copyright notice and
|
||||
|
@ -10,18 +10,12 @@
|
|||
of any kind.
|
||||
-->
|
||||
|
||||
Cute name, little information.
|
||||
Ulambda Scheme (also abbreviated "Y Scheme") is a self-hosting Scheme.
|
||||
The primary compiler target is JavaScript.
|
||||
|
||||
Check back later. I have plenty of information to give, but it is all
|
||||
fairly information and chaotic notes that need to be organized. Besides,
|
||||
you're not supposed to even see the repository in this state (outside of its
|
||||
history, at least)---what are you doing here!? Intruder! Prepare thyself
|
||||
for the wrath of the Gibble!
|
||||
There's a lot more to be said, but that story will evolve over time.
|
||||
|
||||
```
|
||||
_ _
|
||||
,--0---0--.
|
||||
| |
|
||||
| |
|
||||
`---------'
|
||||
\/ Ulambda
|
||||
\ Scheme
|
||||
```
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
<!--
|
||||
Copyright (C) 2017 Mike Gerwitz
|
||||
|
||||
This file is part of Gibble.
|
||||
This file is part of Ulambda Scheme.
|
||||
|
||||
Gibble is free software: you can redistribute it and/or modify
|
||||
Ulambda Scheme is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
@ -20,7 +20,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>Gibble Lisp Browserstrap</title>
|
||||
<title>Ulambda Scheme Browserstrap</title>
|
||||
<style type="text/css">
|
||||
* {
|
||||
font-family: monospace;
|
||||
|
@ -35,7 +35,7 @@
|
|||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Gibble Lisp Bootstrap</h1>
|
||||
<h1>Ulambda Scheme Bootstrap</h1>
|
||||
|
||||
<pre id="log">
|
||||
This is the in-browser version of the bootstrap process; it operates
|
||||
|
@ -56,7 +56,7 @@ I'll wait for you to click the button below to get started.
|
|||
<noscript>
|
||||
<p>
|
||||
<strong>Bootstrapping requires JavaScript.</strong>
|
||||
All of Gibble requires JavaScript, actually.
|
||||
All of Ulambda requires JavaScript, actually.
|
||||
</p>
|
||||
</noscript>
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
/**
|
||||
* Command-line bootstrap procedure for Gibble Lisp
|
||||
* Command-line bootstrap procedure for Ulambda Scheme
|
||||
*
|
||||
* Copyright (C) 2017 Mike Gerwitz
|
||||
*
|
||||
* This file is part of Gibble.
|
||||
* This file is part of Ulambda Scheme.
|
||||
*
|
||||
* Gibble is free software: you can redistribute it and/or modify
|
||||
* Ulambda Scheme is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
/**
|
||||
* Bootstrap procedure for Gibble Lisp
|
||||
* Bootstrap procedure for Ulambda Scheme
|
||||
*
|
||||
* Copyright (C) 2017 Mike Gerwitz
|
||||
* Copyright (C) 2017, 2018 Mike Gerwitz
|
||||
*
|
||||
* This file is part of Gibble.
|
||||
* This file is part of Ulambda Scheme.
|
||||
*
|
||||
* Gibble is free software: you can redistribute it and/or modify
|
||||
* Ulambda Scheme is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
|
@ -18,12 +18,12 @@
|
|||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Ideally, the user should be able to bootstrap Gibble Lisp with nothing
|
||||
* Ideally, the user should be able to bootstrap Ulambda Scheme with nothing
|
||||
* more than what they already have installed on their computer, in the
|
||||
* environment that Gibble was designed to run in---the web
|
||||
* browser. Node.js was used during official development, but that is a
|
||||
* large system that should not be a necessary dependency---it should be
|
||||
* needed only for convenience.
|
||||
* environment that Ulambda was designed to run in---the web browser.
|
||||
* Node.js was used during official development, but that is a large system
|
||||
* that should not be a necessary dependency---it should be needed only for
|
||||
* convenience.
|
||||
*
|
||||
* To run this process on a local development environment using Node.js, see
|
||||
* `../bootstrap.js'. To run in your web browser, see `../bootstrap.html'.
|
||||
|
@ -33,7 +33,7 @@
|
|||
|
||||
|
||||
/**
|
||||
* Bootstrap procedure for Gibble Lisp
|
||||
* Bootstrap procedure for Ulambda Scheme
|
||||
*
|
||||
* This abstracts the bootstrap process in such a way that it can be run in
|
||||
* any JavaScript environment. Notably, we need to support not only Node.js
|
||||
|
@ -72,7 +72,7 @@ class Bootstrap
|
|||
/**
|
||||
* Perform bootstrapping process
|
||||
*
|
||||
* This compiles each of the phases of Gibble beginning with
|
||||
* This compiles each of the phases of Ulambda Scheme beginning with
|
||||
* Prebirth. This will evolve in complexity as we continue to move
|
||||
* forward. Each step of the process is self-verifying.
|
||||
*
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
;;; Prebirth Lisp implemented in Prebirth Lisp (self-hosting)
|
||||
;;;
|
||||
;;; Copyright (C) 2017 Mike Gerwitz
|
||||
;;; Copyright (C) 2017, 2018 Mike Gerwitz
|
||||
;;;
|
||||
;;; This file is part of Gibble.
|
||||
;;; This file is part of Ulambda Scheme.
|
||||
;;;
|
||||
;;; Gibble is free software: you can redistribute it and/or modify
|
||||
;;; Ulambda Scheme is free software: you can redistribute it and/or modify
|
||||
;;; it under the terms of the GNU Affero General Public License as
|
||||
;;; published by the Free Software Foundation, either version 3 of the
|
||||
;;; License, or (at your option) any later version.
|
||||
|
@ -17,10 +17,11 @@
|
|||
;;; You should have received a copy of the GNU Affero General Public License
|
||||
;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
;;;
|
||||
;;; THIS IS TEMPORARY CODE that will be REWRITTEN IN GIBBLE LISP ITSELF after
|
||||
;;; a very basic bootstrap is complete. It is retained as an important
|
||||
;;; artifact for those who wish to build Gibble from scratch without using
|
||||
;;; another version of Gibble itself. This is called "self-hosting".
|
||||
;;; THIS IS TEMPORARY CODE that will be REWRITTEN IN GIBBLE LISP ITSELF
|
||||
;;; after a very basic bootstrap is complete. It is retained as an
|
||||
;;; important artifact for those who wish to build Ulambda Scheme from
|
||||
;;; scratch without using another version of Ulambda itself. This is called
|
||||
;;; "self-hosting".
|
||||
;;;
|
||||
;;; This is the Prebirth Lisp implementation of the JavaScript Prebirth
|
||||
;;; compiler, found in `prebirth.js'---that compiler can be used to compile
|
||||
|
@ -39,7 +40,7 @@
|
|||
;;; the manually written `libprebirth.js' to function. Rebirth will remove
|
||||
;;; that completely, which bootstraps the runtime in its entirety. At that
|
||||
;;; point, all development will be exclusively in Scheme and we can get on
|
||||
;;; with Gibble.
|
||||
;;; with Ulambda Scheme.
|
||||
|
||||
;; pair selection
|
||||
(define (cadr xs)
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
/**
|
||||
* Bootstrap Gibble Lisp ("Prebirth")
|
||||
* Bootstrap Ulambda Scheme ("Prebirth")
|
||||
*
|
||||
* Copyright (C) 2017 Mike Gerwitz
|
||||
*
|
||||
* This file is part of Gibble.
|
||||
* This file is part of Ulambda Scheme.
|
||||
*
|
||||
* Gibble is free software: you can redistribute it and/or modify
|
||||
* Ulambda Scheme is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
|
@ -18,23 +18,19 @@
|
|||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* THIS IS TEMPORARY CODE that will be REWRITTEN IN GIBBLE LISP ITSELF after
|
||||
* a very basic bootstrap is complete. It is retained as an important
|
||||
* artifact for those who wish to build Gibble from scratch without using
|
||||
* another version of Gibble itself. This is called "self-hosting".
|
||||
* THIS IS TEMPORARY CODE that will be REWRITTEN IN ULAMBDA SCHEME ITSELF
|
||||
* after a very basic bootstrap is complete. It is retained as an important
|
||||
* artifact for those who wish to build Ulambda Scheme from scratch without
|
||||
* using another version of Ulambda itself. This is called "self-hosting".
|
||||
*
|
||||
* Rather than producing a sophisticated self-hosting language, this
|
||||
* language will be a terribly incomplete and inadequate version of what
|
||||
* will ultimately become a formidable and competent language.
|
||||
*
|
||||
* I refer to this entire complication process as "Prebirth".¹ The "Birth"
|
||||
* of Gibble is the act of reimplementing this Prebirth in a Prebirth
|
||||
* version of Gibble Lisp itself. It's the chicken-and-egg paradox, without
|
||||
* the paradox.²
|
||||
*
|
||||
* Gibble Lisp is _not_ the most primitive language that will be understood
|
||||
* by the system---it is too high-level. After Birth, the language can
|
||||
* devolve into something more powerful and workable.
|
||||
* of Ulambda Scheme is the act of reimplementing this Prebirth in a
|
||||
* Prebirth version of Ulambda itself. It's the chicken-and-egg paradox,
|
||||
* without the paradox.²
|
||||
*
|
||||
* Some minor terminology:
|
||||
* - AST: Abstract Syntax Tree, a processed form of the CST.
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
;;;
|
||||
;;; Copyright (C) 2017, 2018 Mike Gerwitz
|
||||
;;;
|
||||
;;; This file is part of Gibble.
|
||||
;;; This file is part of Ulambda Scheme.
|
||||
;;;
|
||||
;;; Gibble is free software: you can redistribute it and/or modify
|
||||
;;; Ulambda Scheme is free software: you can redistribute it and/or modify
|
||||
;;; it under the terms of the GNU Affero General Public License as
|
||||
;;; published by the Free Software Foundation, either version 3 of the
|
||||
;;; License, or (at your option) any later version.
|
||||
|
@ -17,10 +17,10 @@
|
|||
;;; You should have received a copy of the GNU Affero General Public License
|
||||
;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
;;;
|
||||
;;; THIS IS TEMPORARY CODE that will be REWRITTEN IN ULAMBDA SCHEME after
|
||||
;;; a very basic bootstrap is complete. It is retained as an important
|
||||
;;; artifact for those who wish to build Gibble from scratch without using
|
||||
;;; another version of Gibble itself. This is called "self-hosting".
|
||||
;;; THIS IS TEMPORARY CODE that will be REWRITTEN IN ULAMBDA SCHEME after a
|
||||
;;; very basic bootstrap is complete. It is retained as an important
|
||||
;;; artifact for those who wish to build Ulambda Scheme from scratch without
|
||||
;;; using another version of Ulambda itself. This is called "self-hosting".
|
||||
;;;
|
||||
;;; This is the compiler for Rebirth Lisp---it builds off of Birth by
|
||||
;;; first eliminating the need for libprebirth; this allows _all_
|
||||
|
@ -37,12 +37,6 @@
|
|||
;;; Rererebirth, or Re*birth, or Reⁿbirth---it is a recursively self-hosting
|
||||
;;; compiler. It adds features to itself each time it compiles itself.
|
||||
;;;
|
||||
;;; The ultimate goal after all of those compilation steps is to produce a
|
||||
;;; compiler that can support the actual Scheme to be used by Gibble:
|
||||
;;; Ulambda Scheme (abbreviated "Y Scheme", for an upside-down lambda, where
|
||||
;;; "Y" stands for the Y combinator). More on the name in the future
|
||||
;;; (perhaps see the Ulambda documentation).
|
||||
;;;
|
||||
;;; Note that we're dealing with a small subset of Scheme here, so certain
|
||||
;;; things might be done differently given a proper implementation.
|
||||
;;;
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
;;;
|
||||
;;; Copyright (C) 2017, 2018 Mike Gerwitz
|
||||
;;;
|
||||
;;; This file is part of Gibble.
|
||||
;;; This file is part of Ulambda Scheme.
|
||||
;;;
|
||||
;;; Gibble is free software: you can redistribute it and/or modify
|
||||
;;; Ulambda Scheme is free software: you can redistribute it and/or modify
|
||||
;;; it under the terms of the GNU Affero General Public License as
|
||||
;;; published by the Free Software Foundation, either version 3 of the
|
||||
;;; License, or (at your option) any later version.
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
;;;
|
||||
;;; Copyright (C) 2017, 2018 Mike Gerwitz
|
||||
;;;
|
||||
;;; This file is part of Gibble.
|
||||
;;; This file is part of Ulambda Scheme.
|
||||
;;;
|
||||
;;; Gibble is free software: you can redistribute it and/or modify
|
||||
;;; Ulambda Scheme is free software: you can redistribute it and/or modify
|
||||
;;; it under the terms of the GNU Affero General Public License as
|
||||
;;; published by the Free Software Foundation, either version 3 of the
|
||||
;;; License, or (at your option) any later version.
|
||||
|
@ -109,8 +109,8 @@
|
|||
;; on blindly. Any errors resulting from undefined procedures, for
|
||||
;; example, occur at runtime in the compiled output.
|
||||
;;
|
||||
;; These are features that will be implemented in Gibble Lisp; that's
|
||||
;; not something to distract ourselves with now.
|
||||
;; These are features that will be implemented in Ulambda Scheme;
|
||||
;; that's not something to distract ourselves with now.
|
||||
;;
|
||||
;; So there are some corollaries:
|
||||
;;
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
;;;
|
||||
;;; Copyright (C) 2017, 2018 Mike Gerwitz
|
||||
;;;
|
||||
;;; This file is part of Gibble.
|
||||
;;; This file is part of Ulambda Scheme.
|
||||
;;;
|
||||
;;; Gibble is free software: you can redistribute it and/or modify
|
||||
;;; Ulambda Scheme is free software: you can redistribute it and/or modify
|
||||
;;; it under the terms of the GNU Affero General Public License as
|
||||
;;; published by the Free Software Foundation, either version 3 of the
|
||||
;;; License, or (at your option) any later version.
|
||||
|
|
Loading…
Reference in New Issue