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