Cooperscript current project can be found here.
Cooperscript (implemented in Java) is an open source Python dialect in which all operators precede their operands, and parentheses are used for all grouping (except string literals, which are delimited with double quotes, also statements are separated by semicolons). Cooperscript source files have a .COOP extension. Coopertags files (the sister language of Cooperscript, a text markup language) have a .CPTG extension. Cooperscript boasts an ultra-simple Lisp-like syntax unlike all other languages. COOPERScript: Compact Object Oriented Programming Environment and Runtime System.
Special Characters
- Core:
- () grouping
- - word separator
- ; end of stmt.
- : dot operator
- " string delimiter
- \ escape char.
- Operators:
- + - * / %
- = < >
- & | ^ ~ ! ?
- Other:
- # comment
- {} block comment
- _ used in identifiers
- $ string prefix char.
Differences from Python
- Parentheses, not whitespace
- Operators come before their operands
- Integration with Coopertags
- Information hiding (public/private)
- Single, not multiple inheritance
- Adds interfaces ("hedron" defs.)
- Drops iterators and generators
- Adds lambdas
- Adds quote and list-compile functions, treating code as data
- Adds cons, car and cdr functionality
Coopertags
Coopertags is a simplified markup language used to replace HTML. Mock JSON files using Coopertags syntax have a .CPJS extension, and include no commas. Instead of myid: val, use [myid: val]. Instead of [1, 2, 3], use [arr: [: 1][: 2][: 3]]. Arbitrary Coopertags code can be embedded in the Cooperscript echo statement. Coopertags syntax, where asterisk (*) means occurs zero or more times, is defined as follows:
- Tags:
- [tag]
- [tag (fld val)*: body]
- [tag (fld val)*| body |tag]
- Body:
- text
- [(fld val)*: text]*
- Cooperscript call:
- [expr: <expr>]
- [exec: <stmt>... ]
- [coop: <path>]
Keyboard Aid
This optional feature enables hyphens, open parentheses, and close parentheses to be entered by typing semicolons, commas, and periods, respectively. When enabled, keyboard aid can be temporarily suppressed by using the Ctrl key in conjunction with typing semicolons, commas, and periods (no character substitution takes place). By convention, hyphens are used to separate words in multi-word identifiers, but semicolons are easier to type than hyphens. Similarly, commas and periods are easier to type than parentheses. Typing semicolon converts previous hyphen to a semicolon, and previous semicolon to a hyphen (use the Ctrl key to override this behaviour). Typing semicolon after close parenthesis simply inserts semicolon. Typing space after hyphen at end of identifier converts hyphen to underscore. The close delim switch automatically inserts a closing parenthesis/brace/double quote when the open delimiter is inserted.