Algol68 reified the references that were implicit in Algol60. Identifiers might refer to integers or alternatively to locations where integers might be stored. An assignment required that the expression to the left of the assignment operator evaluate to a reference. That would identify a storage location into which a computed value would be placed. Storage was allocated on the stack or on the heap. References to stack items were available and if preserved beyond the lifetime of the stack frame became illegal to use. Few Algol68 systems checked such use and thus such systems were insecure. Aside from this concession to efficiency the Algol68 references could be viewed as explicit capabilities. Secure systems were developed on Algol68 which allocated “stack” frames on the heap when there was code that might produce persisting references to the stack items. Algol68 has anonymous procedures expressions, nested scoping and thus has much of the power of Scheme with typing.
The language Mary extended the Algol 68 reference concept.