Git Product home page Git Product logo

lu-c's Introduction

lu-c

Installing

brew install lua
brew install luarocks
luarocks install lpeg
luarocks install busted  # tests only

Running tests

busted tests/*_test.lua

Core type hierarchy

type
 |- enum (parameterized by type)
 |- union (parameterized by type)
 |- struct
 |- function (->, =>, @>)
 |- numeric (int, float, ...)
 |- sequence ([], generators/[...]?)
 |- pointer (@)

Properties of a "type":

  1. data specification a. alignment b. size c. deletion semantics?
  2. interface specification a. class membership

Grammar

Doc comments

Point :: struct  #(
  Points represent a 3D location in cartesian space.
) {
  x: int  #( x-axis location );
  y: int  #(...);
  z: int  #(...);
};

Generic manipulation of statements, types, and values

if (this ?= that) do {
  goSomewhere();
} else do {
  print("uneq");
};

x = if (this ?= that) "eq" else "uneq";

Number (integral: bool = false) :: if (integral) int else double;

Options idiom

f: (x: int, y: int, opts: Options = {}) => int
where {
  Options :: struct {
    use_algorithm_z: bool = true;
  };
};

TODO: Why is the above better than many default args?

  • More compact top-level definition?

Is != or xor better?

  • xor is more clearly a boolean operator
  • != is more consistent with words -> "lazy" mental shortcut
  • != results in one less operator
  • xor could be "oneof" in more than 2-argument case though, this actually can be lazy, because if 2 are true, we can exit early. Is this useful? Why 1-of-n and not m-of-n (e.g. exactly two true)?
if (some_thing < 100 xor the_other_thing `hasQuality`) do {
  do createStuff();
}

Type functions

Map (T) (max_itr :int) :(l :T) => T
where { T }
{ ... }

lu-c's People

Contributors

luisrayas3 avatar

Watchers

James Cloos avatar

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.