abstract data type alex martelli applescript array associative array bit boolean bounds checking common lisp compiler composite type computer computer science data type debugging dependent ml dependent type derived type documentation downcasting duck typing effect system eval existential quantification fail-fast fortran generic programming integer javascript kind linear logic memory address metaclass metaprogramming microsoft module nominative type system object type objective-c operator overloading php perl polymorphism polymorphism in object-oriented programming presburger arithmetic primitive type programming language recursive type reference type signedness smalltalk software testing strongly-typed programming language structural type system subtype trade-off type conversion type inference type polymorphism type safety type signature type theory typeful programming uniqueness type unit testing universal quantification visual basic wikibooks