Skip to content

Commit 6198f86

Browse files
committed
C4: Delete all forward links
1 parent bd944d9 commit 6198f86

File tree

4 files changed

+7
-7
lines changed

4 files changed

+7
-7
lines changed

_posts/2025-09-01-AST-me-anything.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,5 +245,5 @@ The main body of the `Compiler.Analyze` method just steps through a series of te
245245
The node types mentioned in this list from a very small subset of the all the node types.
246246
Here we see pretty much a few data-oriented node types. Clearly the `Symbol` and `ISeq` analyzers are doing the heavy lifting. Enough that each gets its own post:
247247

248-
- [Symbolic of what?]({{site.baseurl}}{% post_url 2025-09-02-symbolic-of-what })
249-
- [ISeq clarity]({{site.baseurl}}{% post_url 2025-09-03-iseq-clarity })
248+
- __Symbolic of what?__
249+
- __ISeq clarity__

_posts/2025-09-02-symbolic-of-what.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ private static object ResolveIn(Namespace n, Symbol symbol, bool allowPrivate)
258258

259259
To finish of this code, some brief comments on a few of the auxiliary methods mentioned above.
260260

261-
`Compiler.ReferenceLocal` is called when we have identified a reference to a local binding. It does some bookkeeping needed for code-gen. Specifically, it notes the usage of the local binding in the containing function (if there is one) and any functions above that is might be nested in. This is so that we know to close over those variables when creating an instance of the function. It also notes if the local variable is the `this` variable; reference to `this` precludes static linking. But more about that in [C4: Functional anatomy]({{site.baseurl}}{% post_url 2025-09-04-functional-anatomy }).
261+
`Compiler.ReferenceLocal` is called when we have identified a reference to a local binding. It does some bookkeeping needed for code-gen. Specifically, it notes the usage of the local binding in the containing function (if there is one) and any functions above that is might be nested in. This is so that we know to close over those variables when creating an instance of the function. It also notes if the local variable is the `this` variable; reference to `this` precludes static linking. But more about that in __C4: Functional anatomy__.
262262

263263
`Compiler.RegisterVar` is similar. It just notes the reference to the `Var` in the containing function (if there is one). A field in the class implementing the function will be created and initialized to the `Var` in question.
264264

@@ -288,7 +288,7 @@ These are when the symbol does not have a namespace:
288288
- `ns` -- treated as a special case -- always found
289289
- name found in current namespace (return var) (there are variants in the resolve/lookup code that will create the `Var` if not found)
290290

291-
Several kinds of AST nodes can be created from symbols. The details of node types are covered in [C4: AST me anything]({{site.baseurl}}{% post_url 2025-09-01-AST-me-anything }). For symbols with a namespace:
291+
Several kinds of AST nodes can be created from symbols. The details of node types are covered in _C4: AST me anything__. For symbols with a namespace:
292292

293293
- ns/name, ns names a `Type`, that type has a field or property with the given name => `StaticFieldExpr` or `StaticPropertyExpr`
294294
- ns/name, ns names a `Type`, no field or property found, name does not start with a period => `QualifiedMethodExpr`, Static

_posts/2025-09-03-iseq-clarity.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,13 @@ The following special cases are handled:
9494
- we are not in an 'evaluation context' (more on that some other day).
9595
- the `Var` is not marked as dynamic, does not have metatdata `:redef` = true, and does not have metadata ':declared' = true
9696
- The Var is bound to a class that has an `invokeStatic` method with a matching number of arguments
97-
I discussed static invocation in another blog post, [The function of naming; the naming of functions]({{site.baseurl}}{% post_url 2025-02-28-function-naming }). It also will be discussed in [C4: Functional anatomy]({{site.baseurl}}{% post_url 2025-09-04-functional-anatomy }).
97+
I discussed static invocation in another blog post, [The function of naming; the naming of functions]({{site.baseurl}}{% post_url 2025-02-28-function-naming }). It also will be discussed in __C4: Functional anatomy__.
9898

9999
- primitive invocation. We create an AST node of type `InstanceMethodExpr` to invoke the `.invokePrim` method of the function. The conditions are:
100100
- `fexpr` is a `VarExpr`
101101
- the `Var` is bound to a class that has an `invokePrim` method with a matching number of arguments (determined by looking at the `:arglists` metadata on the `Var`)
102102
- we are not in an 'evaluation context' (more on that some other day).
103-
We will discuss this in more detail in [C4: Functional anatomy]({{site.baseurl}}{% post_url 2025-09-04-functional-anatomy }).
103+
We will discuss this in more detail in __C4: Functional anatomy__.
104104

105105
- keyword invocation. When our form looks like `(:keyword coll)`, we create an AST node of type `KeywordInvokeExpr`. The conditions are:
106106
- `fexpr` is a `KeywordExpr`

_posts/2025-09-04-functional-anatomy.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ I'll leave `applyTo` as an exercise.
288288

289289
## Static invocation
290290

291-
In the previous post [C4: ISeq clarity]({{site.baseurl}}{% post_url 2025-09-03-iseq-clarity }), I touched upon the notion of static invocation of functions. Static invocation is an efficiency hack. It allows a call such as
291+
In the previous post __ISeq clarity__, I touched upon the notion of static invocation of functions. Static invocation is an efficiency hack. It allows a call such as
292292

293293
```Clojure
294294
(f 1 2 3)

0 commit comments

Comments
 (0)