-
Notifications
You must be signed in to change notification settings - Fork 0
/
.todo
128 lines (79 loc) · 2.22 KB
/
.todo
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
= multiple sequence builder modifiers, e.g. index AND previous
= f(n) = n + f(n-1) + f(n-2), 1 1 3
'some-seq [ = ( -- sequence )
0 1 [ + + ] [ with-previous with-index ] sequence
] def
= sequence word
'linear-sequence [
1 [ 1 + ] sequence
] def
same as
'linear-sequence [ = ( -- sequence )
[ 1 [ 1 + ] next ]
] def
= empty quote
1 ' curry puts = [ ]
fix: currently this fails:
' call
1 ' curry call
= currying
1 1 curry puts = [ 1 1 ]
should it be like that? doesn't curry expect a quote at the top of the stack?
= private by default - defined word is not exported from a namespace, unless explicitly made public
= namespace detection
```
[ file io ] use
1 puts = `puts` comes from `io:` namespace
1 io:puts = same
'script.l' file:read = have to specify the namespace, as both used namespaces export the `read` word
```
= namespace isolation
'sequence use
doesn't make exported words available outside of the file that uses it explicitly
= rework [1,b] et all to be lazy sequences
= introduce '? for doc/source: 'times ? / 'times show-source / 'times show-doc
= introduce 'first-n as a specific filter: [ ... ] 5 first-n 'puts each
= data structures
'associative-list [
[
[ 'a 1 ]
[ 'b 2 ]
false
] def
'tree [
[ [ 1 [ 4 false ] ] [ 2 [ 3 false ] ] ]
def
= replace debug with repl
implement 'stack for debug to print it
= file operations
nix: file:open file:read file:write file:close
= self-parser and self-interpreter, bootstrap
=== VMs and compilers
https://github.com/crcx/nga - no i/o, stack, simple, few instructions
https://c9x.me/compile/
http://microvm.github.io/ (dead)
www.vpri.org/pdf/tr2010003_PEG.pdf source->ast->pseudo->machine
=== natural speak
'a [ ] def
18 a prime? is
=== failures
3 [1,b] 5 nth
[ ] expect-error
=== types
number
quote
string
sequence
= meaningful errors
"a" 1 +
number head-tail
= type-specific methods?
1 circle area puts = 3.14...
2 square area puts = 4
= pmap
parallelize computation for non-dependent sequences
= effects
https://koka-lang.github.io/koka/doc/book.html#sec-handlers
'square-root ( positive-number -- root ) [ ... ] exception def
^^^^^^^^^
also https://concatenative.org/wiki/revision/1184