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