-
Notifications
You must be signed in to change notification settings - Fork 2
/
SpadNodeWalk.spad
85 lines (81 loc) · 2.33 KB
/
SpadNodeWalk.spad
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
)abbrev category SNWALK SpadNodeWalk
SpadNodeWalk(R : Type) : Category == Definition where
)include SpadTypeDefs.inc
Definition ==> with
gensym : () -> Symbol
walk : APP -> R
walk : ASS -> R
walk : SC -> R
walk : CE -> R
walk : FN -> R
walk : FT -> R
walk : IM -> R
walk : IT -> R
walk : LP -> R
walk : SM -> R
walk : MR -> R
walk : MT -> R
walk : NR -> R
walk : RT -> R
walk : SEG -> R
walk : AGG -> R
walk : ST -> R
walk : TC -> R
walk : TD -> R
walk : TG -> R
walk : TEH -> R
walk : TEI -> R
walk : TEP -> R
walk : TI -> R
walk : TO -> R
walk : TS -> R
walk : TVL -> R
walk : TV -> R
walk : UT -> R
walk : SW -> R
walk : String -> R
walk : Symbol -> R
walk : I -> R
walk : DF -> R
walk : () -> R
walk : N -> R
add
gensym() ==
GENSYM()$Lisp
walk (n : N) : R ==
apply? n => walk (n :: APP)
assign? n => walk (n :: ASS)
case? n => walk (n :: SC)
condExpr? n => walk (n :: CE)
function? n or lambda? n => walk (n :: FN)
functor? n => walk (n :: FT)
import? n => walk (n :: IM)
iterator? n => walk (n :: IT)
loop? n => walk (n :: LP)
macro? n => walk (n :: SM)
mappingType? n => walk (n :: MT)
marker? n => walk(n :: MR)
nodeRef? n => walk (n :: NR)
recordType? n => walk (n :: RT)
segment? n => walk (n :: SEG)
aggregate? n => walk (n :: AGG)
subType? n => walk (n :: ST)
typeCoerce? n => walk (n :: TC)
typeDecl? n => walk (n :: TD)
typeGuard? n => walk (n :: TG)
typeHas? n => walk (n :: TEH)
typeIs? n => walk (n :: TEI)
typeInfo? n => walk (n :: TI)
typePretend? n => walk (n :: TEP)
typeOrigin? n => walk (n :: TO)
typeSelect? n => walk (n :: TS)
typeValue? n => walk (n :: TVL)
typeVar? n => walk (n :: TV)
unionType? n => walk (n :: UT)
where? n => walk (n :: SW)
string? n => walk (n :: String)
symbol? n => walk (n :: Symbol)
integer? n => walk (n :: I)
float? n => walk (n :: DF)
null? n => walk ()
error "walk: variant not handled"