diff --git a/doc/ansi_data_flow.xml b/doc/ansi_data_flow.xml index 8419160c8..939baa0d9 100644 --- a/doc/ansi_data_flow.xml +++ b/doc/ansi_data_flow.xml @@ -7,6 +7,39 @@ Data and control flow +
+ <function>LET</function>, <function>FLET</function>, + <function>LABELS</function> and <emphasis>lambda list</emphasis> + &ANSI; addendum + + &ANSI; doesn't specify what should happen if any of the + LET, FLET and + LABELS blocks contain many + bindings (or functions) + sharing the same name. Because the behavior varies between the + implementations and the programmer can't rely on the spec, &ECL; + signals an error if such situation + occurs. This is also very unlikely, that programmer does that + intentionally, since there is no valid use-case for it. + + + Moreover, while &ANSI; defines lambda + list parameters in the terms of + LET*, programmer can't provide an + initialization forms for required parameters. If required + parameters share the same name error is + signalled. + + + Described behavior is present in &ECL; since version + 16.0.0. Previously the + LET operator were using first binding, while + lambda lists used last occurrence. Both + FLET and LABELS were + singalling an error if C compiler was used and used last binding as + visible one when bytecmp was used. +
+
Minimal compilation