yacas mode
x
1
// example yacas code
2
Graph(edges_IsList) <-- [
3
Local(v, e, f, t);
4
5
vertices := {};
6
7
ForEach (e, edges) [
8
If (IsList(e), e := Head(e));
9
{f, t} := Tail(Listify(e));
10
11
DestructiveAppend(vertices, f);
12
DestructiveAppend(vertices, t);
13
];
14
15
Graph(RemoveDuplicates(vertices), edges);
16
];
17
18
10 # IsGraph(Graph(vertices_IsList, edges_IsList)) <-- True;
19
20 # IsGraph(_x) <-- False;
20
21
Edges(Graph(vertices_IsList, edges_IsList)) <-- edges;
22
Vertices(Graph(vertices_IsList, edges_IsList)) <-- vertices;
23
24
AdjacencyList(g_IsGraph) <-- [
25
Local(l, vertices, edges, e, op, f, t);
26
27
l := Association'Create();
28
29
vertices := Vertices(g);
30
ForEach (v, vertices)
31
Association'Set(l, v, {});
32
33
edges := Edges(g);
34
35
ForEach(e, edges) [
36
If (IsList(e), e := Head(e));
37
{op, f, t} := Listify(e);
38
DestructiveAppend(Association'Get(l, f), t);
39
If (String(op) = "<->", DestructiveAppend(Association'Get(l, t), f));
40
];
41
42
l;
43
];
44
MIME types defined: text/x-yacas
(yacas).