GithubHelp home page GithubHelp logo

ghl3 / jest Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 286 KB

An interpreted language run on the JVM.

License: MIT License

Shell 0.13% Clojure 47.72% Java 44.65% Makefile 0.91% GAP 6.59%

jest's People

Contributors

ghl3 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

jest's Issues

Add protocols defs and integrate with records

  • Create a "defprotocol" keyword to create a new protocol
  • Create a "Implements" keyword in the record definition to list protocols it implements
  • Add support for implementing the protocol in the record definition

Improve Type Checking

  • Ensure type checking works with all example programs
  • When type checking is omitted, include type checking in the source, but fall back to the most generic version (based on the arity).
  • Add automatic typeness to keywords, maps, vectors

Module System

Design a module system and add Jest imports.

Can borrow from Haskall, where each module is identified by it's path and each module at the very top identifies what functions it exports (for easier parsing)

Native Type Checking

The Jest language would be strongly improved if it implemented its own type checking system (instead of relying on core/typed). core/typed is great, but is designed as an add-on to existing clojure programs. We can do better with something more specifically designed for Jest.

Unpacking

Add variable definition via unpacking:

val (x, y) = getXAndY();

Integrate with ClojureScript

  • Allow compiling of Jest source to Javascript by using ClojureScript as a bridge.
  • Create a command line argument to the main Jest executable "--js" that outputs the javascript source.

Create Jest Type library

  • Remove the hacky "#" for core.typed types and instead create a clojure namespace of supported jest types and then :require that namespace in compiled Jest Clojure.
  • Improve the Jest parser to leverage these types
  • Add these types to the documentation (probably need to create a separate Types section)

Pattern Matching

  • Add a generic type of pattern matching similar to a switch statement
  • Add a "complete" pattern matching for certain types (may need to create an enum-like type to support this)

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.