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
Mike Gerwitz 2018-02-08 23:40:00 -05:00
parent e8c9c6cdd8
commit 7e3f3f0b0a
Signed by: mikegerwitz
GPG Key ID: 8C917B7F5DC51BA2
10 changed files with 60 additions and 75 deletions

View File

@ -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
```

View File

@ -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>

View File

@ -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.

View File

@ -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.
*

View File

@ -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)

View File

@ -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.

View File

@ -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.
;;;

View File

@ -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.

View File

@ -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:
;;

View File

@ -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.