4 ms·
Clauses within clauses are not "recursive", no more than "let x = 1 in (let y = 2 in (let z = 3 in x + y + z)" represents recursion in some hypothetical program
by derriz 2y ago
Clauses within clauses are not "recursive", no more than "let x = 1 in (let y = 2 in (let z = 3 in x + y + z)" represents recursion in some hypothetical programming language.
Programming languages and human languages existed before people felt the need to define them using formal grammars. Yes most formal grammars use recursion but that's a property of the system you are trying to use to describe (meta) the structure of the object language - not part of the object language itself.
Try to use Haskell without recursion, it's effectively useless. But using an Algol derived language (Java, C, C++, etc.) without recursion is fine and hardly restricts the power of the language at all. Try to use English (or any other indo-European language - I've no knowledge of others) without sub-clauses and it remains a very powerful and useful communication tool.
- trealira 2y ago> Clauses within clauses are not "recursive", no more than "let x = 1 in (let y = 2 in (let z = 3 in x + y + z)" represents recursion in some hypothetical programming language. But that is an example of a recursive context free grammar. The parser needs to use a stack or be defined recursively to parse things like that.
- 082349872349872 2y agoAgreed: if you're willing to be as limited with composing in english as you would be with programming in C, lack of recursion is not an issue. (there's a bit of a parallel, in that XVII english writers, not having readers as pressed for time as our current variant, make far more use of nested sub-clauses than we tend to; similarly, CPL, not having been as pressed for space as either BCPL or C, made far more use of nested sub-expressions than its successor languages)
- foobarqux 2y agoYou are saying that text on a (finite) page is not recursive (because recursion is a computation, not the output of that computation). But we are interested in the computations that the language faculty performs not the output.