CARVIEW |
Select Language
HTTP/2 302
server: nginx
date: Tue, 19 Aug 2025 07:23:07 GMT
content-type: text/plain; charset=utf-8
content-length: 0
x-archive-redirect-reason: found capture at 20090307215221
location: https://web.archive.org/web/20090307215221/https://github.com/technomancy/bus-scheme/tree/
server-timing: captures_list;dur=1.184475, exclusion.robots;dur=0.034381, exclusion.robots.policy;dur=0.014713, esindex;dur=0.020847, cdx.remote;dur=28.874502, LoadShardBlock;dur=578.575131, PetaboxLoader3.resolve;dur=399.814134, PetaboxLoader3.datanode;dur=111.932289
x-app-server: wwwb-app211
x-ts: 302
x-tr: 674
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
set-cookie: wb-p-SERVER=wwwb-app211; path=/
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
HTTP/2 301
server: nginx
date: Tue, 19 Aug 2025 07:23:08 GMT
content-type: text/html; charset=utf-8
content-length: 118
x-archive-orig-server: nginx/0.6.31
x-archive-orig-date: Sat, 07 Mar 2009 21:52:19 GMT
x-archive-orig-connection: close
x-archive-orig-status: 301 Moved Permanently
location: https://web.archive.org/web/20090307215221/https://github.com/technomancy/bus-scheme/tree/master
x-archive-orig-x-runtime: 23ms
x-archive-orig-cache-control: no-cache
x-archive-orig-content-length: 118
cache-control: max-age=1800
memento-datetime: Sat, 07 Mar 2009 21:52:21 GMT
link: ; rel="original", ; rel="timemap"; type="application/link-format", ; rel="timegate", ; rel="first memento"; datetime="Tue, 15 Apr 2008 21:00:58 GMT", ; rel="prev memento"; datetime="Sat, 07 Mar 2009 12:08:13 GMT", ; rel="memento"; datetime="Sat, 07 Mar 2009 21:52:21 GMT", ; rel="last memento"; datetime="Sat, 07 Mar 2009 21:52:21 GMT"
content-security-policy: default-src 'self' 'unsafe-eval' 'unsafe-inline' data: blob: archive.org web.archive.org web-static.archive.org wayback-api.archive.org athena.archive.org analytics.archive.org pragma.archivelab.org wwwb-events.archive.org
x-archive-src: 52_8_20090307182926_crawl102-c/52_8_20090307214918_crawl101.arc.gz
server-timing: captures_list;dur=0.568388, exclusion.robots;dur=0.022508, exclusion.robots.policy;dur=0.011109, esindex;dur=0.012746, cdx.remote;dur=12.668809, LoadShardBlock;dur=196.132300, PetaboxLoader3.datanode;dur=129.127221, PetaboxLoader3.resolve;dur=221.785946, load_resource;dur=255.523572
x-app-server: wwwb-app211
x-ts: 301
x-tr: 490
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
HTTP/2 200
server: nginx
date: Tue, 19 Aug 2025 07:23:09 GMT
content-type: text/html; charset=utf-8
x-archive-orig-server: nginx/0.6.26
x-archive-orig-date: Sat, 07 Mar 2009 21:52:20 GMT
x-archive-orig-connection: close
x-archive-orig-status: 200 OK
x-archive-orig-x-runtime: 879ms
x-archive-orig-etag: "2d45d1a3af5f08e85f0ebc2727e73155"
x-archive-orig-cache-control: private, max-age=0, must-revalidate
x-archive-orig-content-length: 27765
x-archive-guessed-content-type: text/html
x-archive-guessed-charset: utf-8
memento-datetime: Sat, 07 Mar 2009 21:52:21 GMT
link: ; rel="original", ; rel="timemap"; type="application/link-format", ; rel="timegate", ; rel="first memento"; datetime="Sun, 17 Feb 2008 04:36:40 GMT", ; rel="prev memento"; datetime="Fri, 06 Mar 2009 21:16:57 GMT", ; rel="memento"; datetime="Sat, 07 Mar 2009 21:52:21 GMT", ; rel="next memento"; datetime="Fri, 17 Apr 2009 05:51:14 GMT", ; rel="last memento"; datetime="Sat, 17 Aug 2024 07:01:52 GMT"
content-security-policy: default-src 'self' 'unsafe-eval' 'unsafe-inline' data: blob: archive.org web.archive.org web-static.archive.org wayback-api.archive.org athena.archive.org analytics.archive.org pragma.archivelab.org wwwb-events.archive.org
x-archive-src: 52_8_20090307182926_crawl102-c/52_8_20090307214918_crawl101.arc.gz
server-timing: captures_list;dur=0.609512, exclusion.robots;dur=0.028776, exclusion.robots.policy;dur=0.014324, esindex;dur=0.016583, cdx.remote;dur=44.722088, LoadShardBlock;dur=112.686712, PetaboxLoader3.datanode;dur=116.349055, load_resource;dur=33.871258
x-app-server: wwwb-app211
x-ts: 200
x-tr: 251
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
content-encoding: gzip
technomancy's bus-scheme at master - GitHub
This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (

This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (

Description: | a Scheme written in Ruby, but implemented on the bus! |
Homepage: | https://bus-scheme.rubyforge.org |
Clone URL: |
git://github.com/technomancy/bus-scheme.git
Give this clone URL to anyone.
git clone git://github.com/technomancy/bus-scheme.git
|
commit cf0e4f498a497e5a3f0ac3a133ff3cb1c17a727e
tree 967b231bad0b48f3dda72add7f12b14a3194be85
parent d009ab438c8f8128bc0da344c807fa5dbed6e28e parent 3fa355fee9c3a9c4889125b56b8611edaa255aa0
tree 967b231bad0b48f3dda72add7f12b14a3194be85
parent d009ab438c8f8128bc0da344c807fa5dbed6e28e parent 3fa355fee9c3a9c4889125b56b8611edaa255aa0
= Bus Scheme by Phil Hagelberg (c) 2007 - 2008 https://bus-scheme.rubyforge.org == Description Bus Scheme is a Scheme written in Ruby, but implemented on the bus! Every programmer must implement Scheme as a rite of passage; this is mine. Note that at least half of the implementation of Bus Scheme must be written while on a bus. Documentation, tests, and administrivia may be accomplished elsewhere, but the majority of actual implementation code is strictly bus-driven. Bus Scheme is primarily a toy; using it for anything serious is (right now) ill-advised. Bus Scheme aims for general Scheme usefulness optimized for learning and fun. It's loosely targeting R5RS, but varies in huge ways. (For the purposes of this project we pretend that R6RS never happened.) See the file R5RS.diff for ways in which Bus Scheme differs from the standard, both things that are yet unimplemented and things that are intentionally different. == Usage $ bus # drop into the REPL $ bus -e "(do some stuff)" $ bus foo.scm # load a file == Tutorial See https://technomancy.us/104 for a "Getting Started" tutorial. == Contributing If you're looking for stuff to do, try "rake todo" Patches are welcome especially if they were written while riding a bus. If your daily commute does not involve a bus but you want to submit a patch, we may be able to work something out regarding code written on trains, ferries, or perhaps even carpool lanes. Join the mailing list to ask questions and discuss: https://rubyforge.org/mail/?group_id=5094 == What makes Bus Scheme different? Well, for starters it's implemented on the bus. No other Scheme implementation can claim this. Here are a few other things that set Bus Scheme apart: === Flexible calling syntax Taking a hint from Arc, Bus Scheme allows you to use the notation (mylist n) to access the nth place of the mylist list instead of (nth mylist n) or the (myhash key) notation to access the slot in myhash corresponding to the value of key instead of (gethash myhash key). TODO: This notation is flexible, and other data types may have their own "call behaviour" specified. === Web functionality Planned: Web and RESTful application development are part of the package. Bus Scheme uses the Rack library to allow scheme programs to serve web applications. Representations of data can be easily translated between s-expressions, HTML, and JSON. === Written in a high-level language Bus Scheme is written in Ruby, which means anyone with experience in high-level dynamic languages (like, oh, I don't know... Scheme?) should be right at home poking around at the implementation. Using Ruby allows the implementation code to remain compact and concise. Bus Scheme should run on Ruby 1.8, Ruby 1.9, Rubinius, and JRuby at least. Bus Scheme also allows you to drop into Ruby when that's convenient. TODO: allow real inline Ruby blocks instead of access via a function call. === Test-Driven Bus Scheme is written in an entirely test-driven manner. As much as possible, it tries to keep its tests written in Scheme itself, so it includes a fairly comprehensive testing suite and encourages programs to be written test-first. == Install * sudo gem install bus-scheme For the source: * git clone git://github.com/technomancy/bus-scheme.git == Todo Bus Scheme is currently missing pieces of functionality: === Parser * multiline strings * regular expressions === General * filter stacktrace * continuations * macros Failing tests for some of these are already included (commented out, mostly) in the relevant test files. === Long Term (post 1.0) * web functions (defresource and friends) * (lambda (arg1 arg2 . args) body) for rest args * string interpolation * escape sequences in strings * Ruby blocks inline? * XML literals? * optimize tail call recursion * compile to Rubinius bytecode * custom call behaviour * parse non-decimal base numbers * parse rationals, scientific, complex, and polar complex numbers == Requirements Bus Scheme should run on (at least) Ruby 1.8, Ruby 1.9, Rubinius, JRuby. Any support for Windows is entirely accidental. == Bonus Fact I haven't actually used a real Scheme yet. Everything I know about it I've gathered from reading The Little Schemer, watching the Structure and Interpretation of Computer Programs videos, and reading lots about Common Lisp and Emacs Lisp. If there are huge gaping flaws in the implementation, this is likely to be why.
This feature is coming soon. Sit tight!