Skip to content
forked from zot/Leisure

Lazy functional programming language and environment with support for metaprogramming. Click the link below for more details.

Notifications You must be signed in to change notification settings

eranmeir/Leisure

 
 

Repository files navigation

Welcome to Leisure,

Leisure is a purely functional, lazy, dynamically typed homoiconic language with a persistent, live, literate, document-based programming environment running on the web.

Leisure is for novices and experts and explores

  • document-based computing: each document acts like a virtual machine image
  • ways to reveal internals to users, like pop-up, interactive AST diagrams
  • using social media techniques within a document to connect authors with users

Leisure’s environment is a virtual machine where the machine is a live document:

  • self-contained and made of human-readable text (you can email them to other people)
  • contains content, code, and persistent data (they act like a webpage, program, and database)
  • combines development and runtime
  • allows collaboration (but can be private)

By the way, Leisure is in active development and not ready for normal use. It is janky, slow, and buggy. If you demand smooth, fast, and robust, Leisure will get there, but right now, it’s definitely not for you.

Convenient language

Leisure provides a convenient syntax and powerful tools to help people try things out quickly, be productive, and customize the language to suit their needs. Leisure’s syntax is based on Lambda Calculus and borrows things from Haskell and other languages while still remaining very small. It also includes metaprogramming facilities to allow powerful customization.

Notebook Style Interactive Development

For decades, programming has been done primarily in glorified text editors, completely ignoring major advances from the *seventies*, in Smalltalk and LISP machines! Some great strides have been made in various IDEs, but typically the programmer is still burdened with a neverending “write, compile, debug, test, repeat” development cycle. Why do you keep settling for this when clearly we can do better?

LISP programmers know the REPL – the command line interactive programming interface. While still heavily under development, Leisure is meant to push this envelope and provide a fully interactive, document-based development environment where your code is executed, errors show when you make them, tests execute as you write your code, and documentation is rich and interactive, as well. Functional programming is quite foreign to newcomers, but what if you could instantly view the parse tree of the code you wrote? Or specify test arguments to your function and see the results live as you make changes to your code in real time? Our goal is to show programmers there has to be a better way, and we’ve settled for the status quo for far too long.

Getting Started

Here are a few demo links you can try. For now, Leisure only works in Chrome.

We use a posix environment amd Meteor to develop Leisure, so you can use Linux, OS X, or cygwin to run or modify Leisure. If you want to run Leisure on your computer, make sure you have Meteor installed.

To run the Leisure server, switch to the top-level project diretory and run meteor:

meteor run

Once meteor is running, you can use localhost:3000/game.lorg to test it. *.lorg files are stored in the private directory. localhost:3000/code.lorg and localhost:3000/cards.lorg are some other ones to try.

To run the command-line Leisure repl, switch to packages/leisure/build and run

npm install

then you can switch back to the top level directory and the repl command, located there, should work.

Packages we use

  • Prism
  • Lazy.js
  • Lodash
  • Meteor
  • Handlebars
  • jQuery
  • jQueryUI
  • js-yaml
  • CoffeeScript
  • source-map
  • persistent-hash-trie
  • utf8
  • github
  • base64
  • sha256
  • adiff
  • diff

Contact

If you want to get in touch, you can email me at bill dot burdick at gmail.

About

Lazy functional programming language and environment with support for metaprogramming. Click the link below for more details.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 84.7%
  • CoffeeScript 11.0%
  • CSS 4.3%