This repository has been archived by the owner on Dec 16, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnote
130 lines (93 loc) · 1.89 KB
/
note
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
129
130
=====
Name mangling
- M (or capitalization of the following char)
~ I
! X
@ T
% R
^ C
& S
* A
_ (remains the same)
+ P
= E
? Q
< L
> G
: O
Mangling examples:
set-border-color -> setBorderColor
set-border-color! -> setBorderColor_X
falsy? -> falsy_Q
<interface> -> _Linterface_G
calm-- -> calm_M_M
calm-X -> calm_MX
calm-x -> calmX
Syntax objects
-----
{
stx: 'nl',
nl: 1
}
{
stx: '\\nl',
nl: 1
}
{
stx: 'comment',
lines: ['line-1', 'line-2', ...],
nl: 1
}
{
stx: 'id',
id: ...,
nl: 0
}
{
stx: 'str',
str: "....",
nl: 0
}
{
stx: 'num',
num: 345,
nl: 0
}
{
stx: 'kw',
kw: 'if-not:',
nl: 0
}
{
stx: '()',
nl: 0,
sub: [...]
}
=======
Smart modes:
- strict: don't allow to introduce more build-time broken things (imports of non-existent
entries, entries that throw at evaluation). It's allowed though to create functions
that refer to non-existent entries. Rename of entry or import entails changes of all
usages of this name (smart rename). If smart rename is impossible (e.g. name
collision), we abort the whole operation.
- tolerant: allow to introduce more broken things but also try to smart rename. If smart
rename is impossible, then do it partially (wherever possible).
- off: allow to introduce more broken things and don't smart rename. This is almost
equivalent of plain text editing.
"Smart rename" implies:
- on entry rename, fix all its usages within the same module, all its imports and all
the usages of the imports in other modules;
- on import rename (or alias rename), fix all the usages of the imported name;
- cannot delete an entry if something depends on it at build time;
- cannot add an entry with non-existent build-time dependencies.
=======
Bootload reactivity
def cell
binding cell
def cell:
- syntactically broken
- depends on unset binding
- computed
binding cell:
- unset
-