Начебто можливо створити систему типів, яка б класифікувала продуктивність, характерну для типів(наприклад, "швидкий / повільний для послідовного доступу", "швидкий / повільний для випадкового доступу", "ефективна пам'ять / неефективний"). Ці риси можуть бути абстрактними типами, розміщеними в ієрархії таким чином, що більш конкретні типи успадковані від них. Однак ефективність будь-якої програми, що використовує ці типи, залежатиме від способу їх фактичного використання / доступу. Для того, щоб система типів робила заяви про саму програму, використання (доступ до) цих типів мало б бути представлене як типи . Це означало б відмовитися від використання вбудованих структур управління (наприклад, для циклів / час) та замість цього використовувати типи, які їх реалізують. Отже, ієрархія може мати абстрактний тип послідовного доступу та список нащадків-серійний-доступ, дерево-серійний -доступні типи тощо.Ефективність використання може бути принаймні частково виражена комбінацією та застосуванням цих типів один до одного.
У такій функціональній мові, як Haskell - яка майже не має структур управління - це здається мені досить практичним та дієвим . В Java, проте, така система здається набагато менш досяжним (Не так багато від реалізації , як від можливості виконання / достовірності результату).
Haskell вже дозволяє остаточно констатувати, яка частина програми є чистою, і пропонує способи обмеження певної діяльності в запечатаних скриньках. Оскільки паралелізм / паралельність у Haskell реалізований через систему типів , можна стверджувати, що він вже є частиною шляху (до того, що ви хочете). Навпаки, імперативні мови (навіть типові, такі як Java) пропонують кодеру багато, багато способів підривати будь-яку спробу цього.
if condition then expensive_operation else cheap_operation
?