Git Product home page Git Product logo

zot / leisure Goto Github PK

View Code? Open in Web Editor NEW
114.0 114.0 8.0 118.5 MB

Polyglot, document-based computing environment. Leisure is very much in flux, right now; please check the readme, below. For a taste of the new version, click the link below, but be warned that it only works in Chrome.

Home Page: http://zot.github.io/Leisure/?load=elisp/README.org

License: Other

Makefile 0.05% JavaScript 89.34% CoffeeScript 8.91% Shell 0.02% CSS 1.42% HTML 0.07% Batchfile 0.01% Emacs Lisp 0.16% Less 0.01%

leisure's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

leisure's Issues

Infix operators

I don't think people will accept having to write + 3 4 instead of 3 + 4. :(

  1. first pass parse into cons-list
  2. run active parse filters (use monad to activate a filter for the current file)
  3. run macros

New List format

[a b c d] instead of [a, b, c, d]

This is more friendly for indented code and for vararg macros.

Define or[, and[, any[, all[, etc.

Pattern matching

Type assertions work, but more general patterns would be nice. This is a decent way to allow extending definitions.

enhance do

allow function definitions in do:

do
  fred x y = x + y
  fred 1 2

Code coverage

keep set of all asts, recursively

remove ast from set when it runs

Show all functions with incomplete coverage and highlight source regions that didn't execute

Xus storage service

Start with a reference implementation for local machine

Later, make some for g-drive, drop-box, orion, etc.

Notebook enhancements

  • Add parse tree button to exprs
  • Add parse tree button to test cases

Done

  • Failed test cases should show expected vs actual results
  • Successful test cases should show expected result on hover
  • Pencil next to test cases to show/hide source and show the current expected value
  • Storage
    • Should explain to the user that it can only access files it creates or world-readable files

Notebook bugs

  • backspace/delete in a definition box frequently seems to position itself at the end the text
  • Get highlighting working, again
  • Function doesn't box in when you partially apply
  • Names in definitions don't highlight properly
  • Many primitive funcs are missing arity
  • Switching to a codeDef should mark the function name

Fixed

  • Pressing tab after an edit seems to screw things up -- make it like shift-enter
  • When the parse tree is showing and you edit the definition, it scrunches the pencil over

Autobuild

Should update errors all over the place. This doesn't really work, yet.

Clicking between func and expr does weird stuff -- teleports the text cursor, duplicates characters, etc

Type constraints, subtyping, and polymorphic functions

-- Should this just be full pattern matching, with first-arg type constraints being just an optimization case?

Type constraints:

Introduce type constraint operator, '::', like in Julia. This means to use the dispatch mechanism when calling the function. Calls to polymorphic function with unhandled type produces an error, so this also provides type checking.

printString x::list = printString-list x

Subtypes -- used in dispatch and type constraints

subtype type subtype -- monad to declare a subtype

isSubtype type subtype -- returns boolean

JS prototypes

Dispatch on first arg can be implemented as JS method

Dispatch on other args can be done like in Xtend

Convert to Xus for event handling

Leisure needs to start a Xus server.

Xus needs to support web sockets and serve up a page for an iframe that reverse-connects to a xus proxy

Active parse filters should be local to a file

Each file should have the ability to enable or disable parsing filters and operators.

By default, only the "standard" filters and operators should be in place -- keep naked parse filter monads in separate files (not in library imports).

clearParseFilters -- clear parse filters and operators
leisureParsing -- only use standard filters and operators

Notebooks should be nonlinear

We need more of a paste-board feel, so you can click the background and it makes a sticky note that can be a document

Also, searches should return linked, editable content, so if you edit a search result, it also edits the original sticky note

Overhaul setType/getType

Change setType and getType to use JS prototypes, with Function as the root -- metadata can be stored in prototype

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.