Недавно я прочитал документ, в котором сравнивались "Контракт-контракт" с Test-Driven-Development. Кажется, что много перекрытий, некоторая избыточность и немного синергии между DbC и TDD. Например, существуют системы автоматического генерации тестов на основе контрактов.
Каким образом DbC перекрывается с современной системой типов (например, в haskell или на одном из этих языков с типичным типом), и есть ли точки, в которых использование обоих вариантов лучше, чем либо?