Raku TOP: Table-Oriented Programming (TOP) in the Raku programming language
This package implements TOP in Raku.
For more information on TOP (Table Oriented Programming): What is Table-Oriented Programming?
Raku TOP Introductory Documents
Raku Introductory Docs
The Object Model Overview
Any classes below in () are not implemented yet
Conceptually, what we're moddeling is:
- Relation 
- Tuple 
- (Section) 
- Database 
- Join 
Most of the above concepts are directly from Relational Set Theory. The exceptions are:
- DataDictionary: Just a set of tables that explain what the rest of the database is doing; may be implemented differently 
- Lot: A group of columns 
- TupleSet: A set of tuples, usually that are the result of a query 
In addition to the above, we have:
- Storage: This is data we can read/write; used for modelling SQL databases, but could also be in-memory tables, spreadsheets, CSV files, etc 
- Formatters: This is for outputting data. Could be tables drawn with CLI box characters, CSV files, etc 
- Parsers: This is for reading from tables. This includes reading in space-separated data, CSV files, etc 
Some formats are only really used as storage (eg. Memory, Postgres). Some things are only ever used as input/output (eg. WithBorders is generally not very useful except as output).
| Format | Storage | Parser | Formatter | Tree Format | 
|---|
| Memory | Yes | No | No |  | 
| Postgres | Yes | No | No |  | 
| HalfHuman | No | Yes | Yes |  | 
| WithBorders | No | No | Yes |  | 
| CSV | Yes | Yes | Make |  | 
| HTML | Make | Make | Make | XML | 
| Spreadsheet | Make | No | No | XML | 
| JSON | Make | Make | Make | JSON | 
| Pod6 | ? | ? | Make | AST | 
| SQLite | Accept | No | No |  | 
| MySQL | Accept | No | No |  | 
| Postgres option with not using cursors (has to support both cursor and non-cursor) | Accept | No | No |  | 
| Dan | Accept | ? | ? |  |  | 
| DataQueryWorkflows | Accept | ? | ? |  | 
- Yes: This item exists 
- No: No plans for this 
- Make: Plans for this, but nothing yet 
- Accept: No plans to make this, but would gladly accept it if someone made it 
- Tree: These ones will be made, but not until Tree-Oriented Programming has been inaugurated 
Raku TOP Class References
Note that the following links don't yet work on raku.land -- you'll need to go to github to read them.
Also, Database::Storage::CSV doesn't work yet (TODO), but the others should; probably start with TOP, then go to Memory, then as you please.
Plans for Raku TOP
For more information on the plans for Raku TOP, see Raku TOP TODO