Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduction to an ActionScript dialect #126

Closed
ghost opened this issue Aug 18, 2019 · 0 comments
Closed

Introduction to an ActionScript dialect #126

ghost opened this issue Aug 18, 2019 · 0 comments

Comments

@ghost
Copy link

ghost commented Aug 18, 2019

ShockScript is AS3, except that:

  • Types are compile-time objects
  • Instance traits are compile-time traits
  • Properties are split into compile-time fixtures, virtual properties and trap properties.
  • Semantics description is focusing in compile-time. QNames exist only in compile-time by default.
  • Variable definitions or simple var declarations have type inferred.
  • The type * is not the default one. Function expressions have signature types inferred in caller arguments.
  • Function overloading is possible with the generic modifier.
  • Operator overloading is possible.
  • Meta methods and iterator methods are directly defined in user classes and enums...
  • Primitive user types (aka. struct) use the meta-data [PrimitiveType]. They're described as types of interned-objects.

Features that might interest programmers from other languages:

  • Fancy enum constants. Like 'bbq_turkey' instead of Fav.BBQ_TURKEY. This is casting, but the upcoming verifier detects invalid fancy identifiers for convenience.
  • Null facility. Still just like AS3, user-defined and String types contain null, but the null-evasion type T! prohibits its occurrence (ReferenceError).

The common language overheads of ShockScript as usual are unchecked-exceptions and multithreading.

If you like the AS3 syntax you might like ShockScript. I've been wanting to make this language since half 2016.

@ghost ghost closed this as completed Aug 18, 2019
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

0 participants