Code Monkey home page Code Monkey logo
Nyx Programming Language photo

nyxlang Goto Github PK

repos: 25.0 gists: 0.0

Name: Nyx Programming Language

Type: Organization

Bio: A language with object-oriented and functional programming features

Nyx Programming Language

This is the canonical implementation of the Nyx programming language. Its behavior should be considered canonical until a working language specification is defined.

About Nyx

Nyx is a hybrid functional and object-oriented programming language that basically takes what the maintainer (Jason Barr, [email protected]) thinks are the best parts of various languages, including Python, Ruby, Swift, Elm, ReasonML, and Racket, puts them in a cup, shakes it, and then pours it out to see what happens.

Disclaimer

EVERYTHING IS IN FLUX. I basically started writing an interpreter to see if I could make certain things work (e.g. syntactically-significant whitespace), and then at some point I decided to rewrite things and think more about what exactly I wanted the language to be like. As long as this disclaimer is here, anything you try with this interpreter is just as likely to be broken as not. I'm basically learning about programming language implementation as I go, so this should be a fun adventure!

Short-term TODO list

  • Start working on tests and documentation/tutorials (ongoing)
  • Start working on a more formal specification
  • Change variable definition keyword from let to var
  • Add basic numeric operations for Decimal and Double types
  • Implement additional numeric types (Fraction, Complex, possibly Integer?)
  • Rewrite String class (work with grapheme clusters?) with additional functional interface
  • Rewrite List class (extend native JS Array) with additional functional interface
  • Refine definitions of tokens and AST nodes
  • Include file, code, and start/end positions in tokens and AST nodes
  • Prevent creation of Newline and Indent/Dedent tokens when parens/brackets/braces are open
  • Make splat operator work fully like JS spread (including spreading a List into a List)
  • Build out numeric operations, functions, and methods
  • Build out math functionality

Longer-term TODO list

  • Add Dictionary object with double splat operator
    • Include **kwargs capability for functions defined in-language
  • Add immutable/persistent Records
  • Add tuples with slicing?
  • Add defining custom object types with composition and inheritance mechanisms
  • Add semantic checking
    • Bindings and functions in namespaces
    • Type checking for bindings and functions
    • Subtyping and parametric polymorphism
    • LONGER-term: Type inference
  • Add type aliasing
  • Define modules and imports
  • Enable interoperativity with JavaScript
  • Build a real CLI interface with improvements to REPL
  • Compile to JS
  • In-language error handling
  • Release interpreter as package
  • Enable string interpolation and tagged template strings
  • Implement block-scoping variables with let, as in Scheme

Nyx Programming Language's Projects

daggy icon daggy

Library for creating tagged constructors.

helpers icon helpers

A collection of useful helper functions

hindley-milner-js icon hindley-milner-js

Algorithm W implementation for type inference and parametric polymorphism in Vanilla JS

hm-def icon hm-def

Runtime type checking for JS with Hindley Milner signatures

immutable-tuple icon immutable-tuple

Immutable finite list objects with constant-time equality testing (===) and no memory leaks.

js-generics icon js-generics

A generic function definition and dispatch library for Javascript.

js-pmd icon js-pmd

Multiple dispatch for JavaScript (toy implementation)

jsclass icon jsclass

Implementation of the core of Ruby's object system in JavaScript.

junify icon junify

JUnify ― JavaScript Unification Library

multimethods icon multimethods

Fast and flexible pattern-matched control flow for JavaScript

nyxlang icon nyxlang

Interpreter for the Nyx programming language

polytype icon polytype

Dynamic multiple inheritance for JavaScript and TypeScript. Without mixins.

protocol icon protocol

Protocol based polymorphism for javascript.

string icon string

Fully Unicode-aware string objects with manipulation and utility methods

string-utils icon string-utils

A utility belt of string functions to handle nearly any string manipulation or task

unify.js icon unify.js

An Efficient JavaScript Unification Library

union-type icon union-type

A small JavaScript library for defining and using union types.

xregexp icon xregexp

Extended JavaScript regular expressions

z icon z

Pattern Matching for Javascript

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.