> 1 Restrict to simple control flow constructs. Details give the precision : no recursion allowed. Functional languages are out, there.
> 2 Give all loops a fixed upper-bound. Func languages give no warranty on that either.
> 3 Do not use dynamic memory allocation after initialization.
You have no access to memory layout, but func languages heavily rely on the creation on-the-fly of data and rely on garbage collection (which is forbidden, too).
> 4 Limit functions to no more than 60 lines of text. > 5 Use minimally two assertions per function on average. > 6 Declare data objects at the smallest possible level of scope. > 7 Check the return value of non-void functions, and check the validity of function parameters. OK, that might be easier with func languages.
> 8 Limit the use of the preprocessor to file inclusion and simple macros. Not relevant
> 9 Limit the use of pointers. Use no more than two levels of dereferencing per expression. OK, no pointer manipulation with these languages.
> 10 Compile with all warnings enabled, and use one or more source code analyzers.
Name one professional code analyzer for any func language of your choice.