See doc/reference for full list of functions.


There are two limitations that arise from JavaScript. These will not be fixed (it's technically possible to fix but will be very inefficient).


BiwaScheme does not have syntax-rules or syntax-case, but has define-macro.

Javascript language interface


Synchronous interface

Some of the BiwaScheme library functions are implemented as synchronous functions.

For example, (sleep sec) will stop evaluation of Scheme program for sec seconds, and then the rest of the program will be evaluated.

(alert "Hello")
(sleep 3)
(alert "World")  ; Evaluated after 3 seconds

Other synchronous functions are listed below.

You can get rid of JavaScript's "callback hell" using these APIs.

// JavaScript (nested callback)
$.get("/a", function(a){
  $.get("/b", function(b){
    $.get("/c", function(c){

// BiwaScheme
(define a (http-request "/a"))
(define b (http-request "/b"))
(define c (http-request "/c"))


BiwaScheme implements some SRFIs (Scheme Requests for Implementation).

Node.js support

You can use BiwaScheme on the server-side with npm install biwascheme (more...)