User Tools

Site Tools


type-proposal

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
type-proposal [2025/08/06 21:07] – [Type names] smj-edisontype-proposal [2025/08/06 21:24] (current) – [Types are reactive] smj-edison
Line 24: Line 24:
 To check if a type is a certain type, use `[$is::typeName $type]` or `[expr {[$typeName $type] == typeLookingFor}]`. To check if a type is a certain type, use `[$is::typeName $type]` or `[expr {[$typeName $type] == typeLookingFor}]`.
  
 +To get details of a type, use `[$details $typeName]`. It should return a doc string or similar.
 ===== Type names ===== ===== Type names =====
 Type names come in two forms: canonical and inline. Canonical type names are either a name, or a list with the first parameter as its name. For example, a type name for meters could be "m", and a type name for acceleration could be "{accel m s}" (note meters and seconds as type parameters). All the type parameters specific to the type, and should not be assumed to be referencing an existing type. Type names come in two forms: canonical and inline. Canonical type names are either a name, or a list with the first parameter as its name. For example, a type name for meters could be "m", and a type name for acceleration could be "{accel m s}" (note meters and seconds as type parameters). All the type parameters specific to the type, and should not be assumed to be referencing an existing type.
  
 Inline type names are a mixture of wildcards and symbol/number characters. For example, the type signature of acceleration could be expressed as "*/*^2". One thing that signature would match to is "m/s^2", with "m" and "s" as the types' parameters. The canonical form would be "{accel m s}". Not all types have inline representations. Inline type names are a mixture of wildcards and symbol/number characters. For example, the type signature of acceleration could be expressed as "*/*^2". One thing that signature would match to is "m/s^2", with "m" and "s" as the types' parameters. The canonical form would be "{accel m s}". Not all types have inline representations.
 +
 +===== Types are reactive =====
 +To get the type list (or any type list, lists can coexist), use <code>
 +When the types are /types/ {
 +  lassign $types box unbox is typeName details
 +  
 +  # example using the newly imported types
 +  puts [$unbox::mm "10 mm"]
 +}
 +</code>
  
 ===== Postfix or prefix? ===== ===== Postfix or prefix? =====
Line 36: Line 47:
  
 Cons of postfix: Cons of postfix:
-  * If the value is long, it will exceed the text boundaries, and as such the tag won't be rendered. (Somewhat mitigated by having something like `[$typeName $foo]`)+  * If the value is long, it will often exceed the renderer'boundaries, and as such the tag won't be seen. (Somewhat mitigated by having something like `[$typeName $foo]`)
  
 Pros of prefix: Pros of prefix:
type-proposal.1754514440.txt.gz · Last modified: 2025/08/06 21:07 by smj-edison

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki