In Lisp community, people often talk about REPL-driven development, where you define your functions in a top-down manner, evaluate in REPL partial or full expressions as you write them, until you see expected function output.
In dynamically-typed, non-Lisp language community, people often talk about test-driven development, where you start with tests before you write actual implementation, fill in any missing functions until tests pass.
In rust community, people talk about compiler-driven development, where you start to use desired apis in the code, fill in any missing definitions until your code compiles.
In reality, they serve the same goal—to figure out the requirement of a functionality:
- In lisp REPL, one fleshes out the requirement by evaluating a call site.
- In tests, one fleshes out the requirement by actualizing the usage of functions and their return value.
- With compiler, one, again, fleshes out the requirement by using the wanting functions directly in code.
From this perspective, people who adopt test-driven development should also know that the 100%-test-coverage catechism is indenpendent from, or has nothing to do with, the fact that they write tests first.