I'm learning Rust as a case study for my own programming language. It's funny how many approaches exist to the humble loop.

- In classic procedural languages, a loop's job is to repeat actions, and as such it provides a multitude of tools to control this repetition.

- In all languages with iterators, a for-in loop is a construct that does something with every element of a collection. In languages with both iterators and generator functions, this can even be used to define a sequence in terms of another.

- In Rust, a loop is an expression that obtains its value through repeated execution. It can also be used like a classic loop, of course, but this is the interesting part.

- My little language is a functional language, so "loop" is the Y combinator. To loop means to define the value of an expression in terms of itself. It's the only looping construct, gets special treatment from the type checker and it's also used in recursive type definitions.

Add Comment