Persistent programming languages attempt to eliminate the impedance mismatch by
extending the programming language with database capabilities. In a persistent programming language, the language’s type system provides the data model, which usually contains rich structuring mechanisms. In some languages, for example PS-algol and Napier88,
procedures are ‘first class’ objects and are treated like any other data objects in the
language. For example, procedures are assignable, may be the result of expressions, other
procedures or blocks, and may be elements of constructor types. Among other things,
procedures can be used to implement abstract data types. The act of importing an abstract
data type from the persistent store and dynamically binding it into a program is equivalent
to module-linking in more traditional languages.