1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# lil includes a fun query system as well as language features for both
# functional programming and vector programming -- this invites interesting
# opportunities for applications built around little databases/datasets and
# the manipulation and querying of that data!
# I'm not 100% certain what I'm going to build with these features, yet, but
# I will use this as a space to explore what lil has to offer.
# people.name:"Alice","Sam","Thomas","Sara","Walter"
# people.age:25,28,40,34,43
# people.job:"Chef","Sous Chef","Baker","Front of house","Baker"
# people:table people
# t:select from people
# show[t]
# s:select where ("S%m" parse name) from people
# show[s]
# d:select where ("Baker" = job) from people
# show[d]
# a:select name where ("Alice" = name) from people
# show[a]
# w:update job:"Amazing Chef" where job = "Chef" from people
# Show[w]
# l:insert name:"John" job:"Critic" age:32 into people
# show[l]
# # save:writecsv[l "sis" ","] # where sis formats the column type, here string integer string -- the other option is boolean.
# # write["test.csv" save]
# on cons x y do
# x,y
# end
# breakfast: insert food:("Eggs","Pancakes","Grapefruit") quantity:(3,4,1) tasty:(1,1,0) into 0 # NOTE, 0 here could also be the name of the variable, so, in this example, breakfast
# show[breakfast]
# needle: "apple"
# haystack: ("frog","apple","chicken","toadstool","apple","rice","fish")
# filter:count needle take haystack
# spread_conforming:sum needle = haystack
# print[filter]
# print[spread_conforming]
# spent a good bit of time playing with lil and reviewing the docs. I am now
# totally smitten and excited to use lil.
# a basic sketch of the data table at the center of the action
# catalogue.entry_type
# catalogue.parent # not 100% certain how to reference another entry by id
# catalogue.title
# catalogue.body
# catalogue.reference
# catalogue.created_date
# catalogue.updated_date # does this matter? (sorta leaning towards "no")
# entry_type's
# - link
# - note
# - folder
# every item can have 1 parent
# a parent is usually a folder
# data table wrapped in an interactive cli for adding, querying, and viewing
# input data. Input data stored as CSV between sessions
# NOTE: if input data is stored as CSV is becomes trivial to pipe in and out
# of SQLite in the future...if that'd be desirable
# NOTE: I'm using just 1 table so that this can be easily exported as CSV...
# if it weren't for that requirement, I'd have multiple tables
# catalogue:table catalogue
# alternate syntax to make a table,
# t: insert food:("Eggs","Pancakes","Grapefruit") quantity:(3,4,1) tasty:(1,1,0) into 0
# validate that I can write a table to disk and read it back in
# show[catalogue]
# out:writecsv[catalogue]
# show[out]
# write["test.csv" out]
# data:read["test.csv"]
# newtable:readcsv[data "sis "] # this column spec. syntax looks hilarious
# show[newtable]
# HUGE SUCCESS!
if args[2] do
url:args[2]
print[url]
else
print["\n please pass a url as an argument\n"]
end
|