Remix.run Logo
RodgerTheGreat 3 days ago

For contrast, here's how I'd handle the example given on the front page in Lil[0]:

    i:"%j" parse shell["curl -s https://api.weather.gov/gridpoints/BOU/63,62/forecast"].out
    t:i.properties.periods..temperature
    o.average:(sum t)/count t
    o.minimum:min t
    o.maximum:max t
    show[o]
Lil doesn't have implicit parsing of .json arguments like Blots- certainly a nice feature for the niche Blots is aimed at. Lil also doesn't have an arithmetic average as a builtin like Blots, but in this case it's easy enough to do without.

The biggest difference here is how Lil handles indexing: The ".." in that second line can be read as "for every index"; a wildcard. I can follow the mapping that occurs in Blots' "via" expression, but I find it less clear in this example.

It can also be nice to treat lists-of-objects as proper SQL-like tables:

     select number name temperature windSpeed from table i.properties.periods
    +--------+-------------------+-------------+---------------+
    | number | name              | temperature | windSpeed     |
    +--------+-------------------+-------------+---------------+
    | 1      | "This Afternoon"  | 54          | "14 mph"      |
    | 2      | "Tonight"         | 46          | "3 to 12 mph" |
    | 3      | "Wednesday"       | 69          | "5 mph"       |
    | 4      | "Wednesday Night" | 45          | "3 mph"       |
    | 5      | "Thursday"        | 79          | "5 mph"       |
    | 6      | "Thursday Night"  | 49          | "5 mph"       |
    | 7      | "Friday"          | 83          | "2 to 6 mph"  |
    | 8      | "Friday Night"    | 52          | "6 mph"       |
    | 9      | "Saturday"        | 81          | "3 to 8 mph"  |
    | 10     | "Saturday Night"  | 53          | "3 to 8 mph"  |
    | 11     | "Sunday"          | 81          | "3 to 7 mph"  |
    | 12     | "Sunday Night"    | 54          | "3 to 7 mph"  |
    | 13     | "Monday"          | 77          | "3 to 7 mph"  |
    | 14     | "Monday Night"    | 53          | "3 to 7 mph"  |
    +--------+-------------------+-------------+---------------+
I hope you continue to tinker and evolve Blots; a personal scripting language guided by the use-cases you encounter naturally can be very rewarding and useful.

[0] http://beyondloom.com/tools/trylil.html

iberator 2 days ago | parent [-]

wow that sql like code is really impressive

flymasterv 2 days ago | parent [-]

Lil is such a beautiful language. It’s so much fun for little data tasks like this.