From 0d5a8c704d517e7f880c5b704867e3d491e9ec8f Mon Sep 17 00:00:00 2001 From: elioat Date: Sat, 8 Jun 2024 15:23:03 -0400 Subject: * --- lil/lilquickref.md | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 lil/lilquickref.md (limited to 'lil/lilquickref.md') diff --git a/lil/lilquickref.md b/lil/lilquickref.md new file mode 100644 index 0000000..2df9d4b --- /dev/null +++ b/lil/lilquickref.md @@ -0,0 +1,83 @@ +title:Lil Quick Reference + +Lil Quick Reference +=================== +Types +----- +| `typeof` | False | Examples | +| :----------- | :--------- | :------------------------------------ | +| `"number"` | `0` | `42` `37.5` `-29999` | +| `"string"` | `""` | `"foo\nbar"` | +| `"list"` | `()` | `11,22,33` `list 3` | +| `"dict"` | `()dict()` | `("a","b") dict 11,22` | +| `"table"` | n/a | `table range 2` `insert a with 1 end` | +| `"function"` | n/a | `on x y do x+y end` | + +Primitives +---------- +| Valence | Purpose | | +| :------ | :--------- | :--------------------------------------------------------------------------- | +| monad | arithmetic | `-` `!` `floor` `cos` `sin` `tan` `exp` `ln` `sqrt` `mag` `unit` `heading` | +| monad | reducers | `count` `first` `last` `sum` `prod` `min` `max` `raze` | +| monad | data | `range` `keys` `list` (enlist) `rows` `cols` `table` `typeof` `flip` | +| dyad | arithmetic | `+` `-` `*` `/` `%` (y mod x) `^` (pow) `&` (min) `|` (max) | +| dyad | logical | `<` `>` `=` (conforming equal) `~` (match) `unless` (x if y is `0`) | +| dyad | string | `fuse` `split` `parse` `format` `like` | +| dyad | data | `,` (concat) `@` (index each right) `dict` `take` `drop` `limit` `in` | +| dyad | joins | `join` (natural join/zip) `cross` (cross join/cartesian product) | + +Flow +---- +- `if bool ... end` +- `if bool ... else ... end` +- `if bool ... elseif bool ... else ... end` (etc) +- `each val key index in x ... end` +- `while bool ... end` +- `send name[args]` + +Queries +------- +- `select exprs clauses from y` reorder, compute, or filter a table +- `update exprs clauses from y` modify rows/columns of a table in place +- `extract exprs clauses from y` like select, but yields non-tabular values +- `insert c1 c2 with "A" 11 "B" 22 end` create a new table +- `insert c1 c2 with "A" 11 "B" 22 into d` append to a table + +- `exprs` can be any number of expressions in the forms: + - an implicitly named bare expression (`id`, `2*index`) + - an explicitly named expression (`ident:id`, `dogyears:7*age`) + - a quoted name, for invalid identifiers (`"not a lil id":foo`) + - if no expressions are provided, all columns will be returned, like `select *` in SQL + +- `clauses` can be any sequence of the following, evaluated right to left: + - `by a`: group rows by the unique values of column b + - `where a`: filter rows by a boolean column a + - `orderby a asc`/`orderby a desc`: sort rows, comparing values of column a as by `<`/`>` + +- special columns/values available when computing any column expression: + - `index`: magic column of original row numbers + - `gindex`: magic column of current row number within group (or all rows if ungrouped) + - `group`: magic column of row's group, by appearance (or `0` if ungrouped) + - `column`: dictionary of the entire group's columns (or all rows if ungrouped) + +Formatting +---------- +A format is `%[name]*-0N.DX`: `*` skip, `0` pad, `N` width. +`-` is invert char class (`ro`) or left justify. +`.D` is decimal places (`fc`), size of char class (`ro`), or truncate to `D` characters. + +| `X` | Purpose | | +| :-------- | :------- | :--------------------------------------------------------------------------------------------- | +| `%nmz` | Parsing | literal `%`, number of chars read, matches? matches to end? | +| `ro` | Matching | repeat (0 or more in char class), optional (0 or 1 in char class) | +| `sula` | String | string, uppercase string, lowercase string, ASCII chars | +| `bficChH` | Number | bool, float, int, currency (`-$1.23`), plain currency (`-1.23`), hex lowercase, hex uppercase | +| `jep` | Misc. | JSON, unix epoch, time-parts {`year`, `month`, `day`, `hour`, `minute`, `second`} | +| `qv` | Lil | quoted Lil string literal, Lil variable name | + +Glob patterns for `like`: + +- `.`: any single character. +- `#`: any single digit 0-9. +- `*`: 0 or more of any character. +- backtick escapes a subsequent special character. -- cgit 1.4.1-2-gfad0