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
language:types2 [2026/08/07 14:28] – [Non-strict template parameters] rajitlanguage:types2 [2026/08/09 13:10] (current) – [Non-strict template parameters] rajit
Line 505: Line 505:
 </code> </code>
 ACT will allow this syntax. This comes with a few caveats: ACT will allow this syntax. This comes with a few caveats:
-    * Any ports for the type can only use strict parameters.  In other words, the type signature can only depend on strict parameters. This is what permits different process types to be treated as a single array, since the external interface to the array elements remains unchanged. So<code act>+    * Any ports for the type can only use strict parameters.  In other words, the type signature can only depend on strict parameters. This is what permits different process types to be mixed within a single array, since the external interface to the array elements remains unchanged. So<code act>
 template<pint W | pint VAL> template<pint W | pint VAL>
 defproc oddbuf(chan?(int<W>) L; chan!(int<W+VAL>) R) defproc oddbuf(chan?(int<W>) L; chan!(int<W+VAL>) R)
Line 514: Line 514:
 -[ERROR]-> Expressions in port parameter list can only use strict template parameters -[ERROR]-> Expressions in port parameter list can only use strict template parameters
 </code> </code>
-   * The array will be treated as a sparse array with multiple chunks, each of which can have different non-strict parameters.+   * Even if the array is dense, it will be treated as a sparse array with multiple chunks where each chunk can have different non-strict parameters.
    * Sub-array expressions cannot be used where different elements have different types.    * Sub-array expressions cannot be used where different elements have different types.