3 ms·
You can use the types the same way--define your types and write type signatures for your functions before implementing them. I've found this particularly usefu
by tikhonj 14y ago
You can use the types the same way--define your types and write type signatures for your functions before implementing them.
I've found this particularly useful when writing really confusing code (like a Prolog interpreter, for example). Coming up with the types on a function clarifies what it has to do and shrinks the space of possible solutions significantly.
Types are a symbolic way to reason about code. Using types, you can get additional insight into how your function can be written just by following some simple rules. A good example of this is realizing that a function you're working on is actually a specific version of a more general function--you can see this if the type signatures look similar. This lets you reuse very high-level, generic code easily.
Going back to the Prolog example, I was having some trouble figuring out how the resolution algorithm should work. Then I realized that the sub-part I was having problems with was just special type of fold. This helped me get a very concise version of the function by reusing an existing library function.
So types can provide exactly the same sort of benefits as TDD.