Add Optional type for filter pipes

Introduces `StaticType::Optional` to represent values that can be either
of a specific type `T` or `Void`. This is crucial for handling
situations in filter pipes where an expression might not always produce
a value.

The type checker now correctly deduces and propagates this `Optional`
type, and the pipeline operator (`pipe`) is updated to unwrap
`Optional(T)` results, yielding `T`. This ensures that the type system
accurately reflects the potential absence of values in intermediate
pipeline steps.

Also includes a minor rename in the tuple-struct example from `pipe` to
`p` for clarity, and registers the `streams` module.
This commit is contained in:
Michael Schimmel
2026-03-01 23:19:00 +01:00
parent b177aa8854
commit 807903efbb
5 changed files with 50 additions and 6 deletions
+2 -2
View File
@@ -1,7 +1,7 @@
;; Benchmark: 890ns
;; Benchmark-Repeat: 2258
(do
(def pipe (fn [conf]
(def p (fn [conf]
(do
(def [str s] conf)
(def [f ss] s)
@@ -10,5 +10,5 @@
)
)
(pipe ["btc" [:close "cls"]])
(p ["btc" [:close "cls"]])
)