@glas/kype
TypeScript icon, indicating that this package has built-in type declarations

0.0.2 • Public • Published

kype

Type Inference Library

TODO

[x] Infer type of an expression based upon other assertions [x] Figure out how to type multiplied values (@ >= 5) * (@ >= 10) Infer Type for Member Expression

Type comparison

{ 0 .. 10 } < { 20 .. 30 }  ->  true
{ 0 .. 10 } < { 0 .. 30 }   ->  null

Types of Runtime Errors

  • divide by zero
  • modulo by zero
  • integer overflow
  • integer underflow
  • infinite loop
  • infinite recursion
  • out of memory
  • null pointer

Indented Syntax

var x = 12 type Foo = 10 .. 20

// only meta class for now. @Meta() class Vector x: Number y: Number translate(x: Number, y: Number) => Vector(this.x + x, this.y + y)

function foo(a: Type, b: Type) => if a is Bar return 12 else for i in 0 .. 20 return 20

// struct or some shiz? @Meta() @Bar() function fooWithMeta( @Meta(12) a: Type @Meta() b: Type ) => callOutline() 12 20 30

Compiler

Folders are always lower case Files are always upper case

namespace/
    Foo.ion
        # var foo       namespace:Foo.foo
        # class Foo     namespace:Foo
        # type Bar      namespace:Foo.Bar

Phases

  • Parse
  • Separate each declaration
  • Resolve Externals
  • Compile Dependencies
  • Compile Self
  • Store Compiled External Details

Recompile

  • Reparse changed file
  • Separate each declaration
  • Compare to previously cached values and skip unchanged
  • Resolve externals
  • Compile Dependencies
  • Compile Self
  • Compile Dependents
  • Update Compiled External Details

Readme

Keywords

Package Sidebar

Install

npm i @glas/kype

Weekly Downloads

1

Version

0.0.2

License

MIT

Unpacked Size

291 kB

Total Files

194

Last publish

Collaborators

  • kodyjking
  • krisnye