From e9f12dd89e0b37eda11bf506415b6248aa967862 Mon Sep 17 00:00:00 2001 From: Timothee Cour Date: Fri, 26 Feb 2021 07:14:25 -0800 Subject: [PATCH] document `;` vs `,` for generic params (#17192) --- doc/manual.rst | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/manual.rst b/doc/manual.rst index 5aca1be805..92235821bd 100644 --- a/doc/manual.rst +++ b/doc/manual.rst @@ -4805,7 +4805,6 @@ The following example shows how a generic binary tree can be modeled: The ``T`` is called a `generic type parameter`:idx: or a `type variable`:idx:. - Is operator ----------- @@ -4861,6 +4860,12 @@ more complex type classes: for key, value in fieldPairs(rec): echo key, " = ", value +Type constraints on generic parameters can be grouped with `,` and propagation +stops with `;`, similarly to parameters for macros and templates: + +.. code-block:: nim + proc fn1[T; U, V: SomeFloat]() = discard # T is unconstrained + template fn2(t; u, v: SomeFloat) = discard # t is unconstrained Whilst the syntax of type classes appears to resemble that of ADTs/algebraic data types in ML-like languages, it should be understood that type classes are static