The Mia Programming Language

From Legends of Fairwind
Jump to: navigation, search

Note: Mia was born as an idea for Legends of Fairwind, but has been supplanted within the Legends of Fairwind project by Fairwind Assembler, which is closer to how "it would have been done in the '80s." Mia will still be developed as an experimental language, however.

Mia programs simulate a network of "living" objects. Each object can respond to messages which are differentiated based upon message signatures (called "handles" in Mia parlance.)

The behavior of sending and receiving messages in Mia replaces the use of functions and procedures found in most other modern languages, and lends itself towards the use of multi-threaded problem solving techniques.

Mia enforces strict encapsulation, permits single inheritance of implementations and mixed multiple inheritance of message signatures.

Keywords by Category

Block Openers

object, strain, implementation, method, try, pick, if, while, for, note

Header Designators for Objects

extends, interface, write, only

protected, virtual

inherit, override

requires, implementation

Header Designators for Strains

mutates, infects, static, inherit, sending, receiving

Command Words

end, lock, attach, detach, zap, disinfect, return, if, else, note, do, try, catch, raise, while, for, implementation

Specific Grammar

true, of, new, copy, handle, to, downto, step, order, by, as, from

Operators

and, or

<, >, <=, >=, ==, !=

;

+, -

*, /, %, &, |, ^

typeof, zapped, strainsof, handlesof, defined, not, string, number, #

Delimiters

\ ( ) @ [ ] $ " ' , . : = << <- >> //

Unused Typing Characters

~ ` { } ?

Predefined Values

initializer, exception, infecter*, constructor, copy, finalizer, unhandled, EQUATES, Library, Methods

(still need: somewhere dynamic to store getters and setters, somewhere static to store interface, protected, and virtual designators)

Primitive Types

  • global
  • number
  • string
  • handle
  • bundle
  • object
  • method
  • strain