\indexentry{Quest}{2} \indexentry{P-Quest}{2} \indexentry{syntactic structure}{3} \indexentry{semantic concept}{3} \indexentry{application programming}{3} \indexentry{system programming}{3} \indexentry{polymorphic type system}{3} \indexentry{data modeling}{3} \indexentry{functional programming}{3} \indexentry{imperative programming}{3} \indexentry{interactive programming environment}{3} \indexentry{lexical rule}{3} \indexentry{syntactical rule}{3} \indexentry{character set}{3} \indexentry{alphanumeric identifier}{4} \indexentry{infix symbol}{4} \indexentry{space}{4} \indexentry{reserved keyword}{4} \indexentry{identifier}{4} \indexentry{convention}{4} \indexentry{readability}{4} \indexentry{comment}{4} \indexentry{infix symbol}{4} \indexentry{operator precedence}{4} \indexentry{bracket}{4} \indexentry{coercion}{5} \indexentry{overloading}{5} \indexentry{predefined, ~ type}{5} \indexentry{base type}{5} \indexentry{predefined, ~ function}{5} \indexentry{predefined, ~ constant}{5} \indexentry{standard library}{5} \indexentry{typing}{5} \indexentry{evaluation}{5} \indexentry{literal}{5} \indexentry{binding}{6} \indexentry{identifier, user-defined ~}{6} \indexentry{identifier, use of ~}{6} \indexentry{expression}{6} \indexentry{bound object}{6} \indexentry{signature}{6} \indexentry{static type information}{6} \indexentry{type, ~ expression}{6} \indexentry{naming}{6} \indexentry{binding, value ~}{6} \indexentry{binding, static ~}{6} \indexentry{static binding}{6} \indexentry{{\bf let}}{6} \indexentry{=}{6} \indexentry{binding, sequential ~}{6} \indexentry{binding, simultaneous ~}{6} \indexentry{scoping, ~ rule}{6} \indexentry{block}{6} \indexentry{{\bf begin}}{6} \indexentry{identifier, global ~}{6} \indexentry{identifier, local ~}{6} \indexentry{declaration, local ~}{6} \indexentry{declaration, global ~}{6} \indexentry{{\bf ok}}{7} \indexentry{{\bf Ok}}{7} \indexentry{binding, anonymous ~}{7} \indexentry{signature}{7} \indexentry{typing}{7} \indexentry{type, ~ inference}{7} \indexentry{binding, recursive ~}{7} \indexentry{pointer type}{7} \indexentry{{\bf rec}}{7} \indexentry{uninitialized identifier}{7} \indexentry{dynamic binding}{7} \indexentry{binding, dynamic ~}{7} \indexentry{function}{7} \indexentry{parameter passing}{7} \indexentry{function, simple ~}{7} \indexentry{{\bf fun}}{7} \indexentry{function, ~ abstraction}{7} \indexentry{formal parameter}{7} \indexentry{signature}{7} \indexentry{function, ~ body}{7} \indexentry{visibility}{8} \indexentry{function, ~ binding}{8} \indexentry{binding, function ~}{8} \indexentry{function, ~ result}{8} \indexentry{type, ~ inference}{8} \indexentry{infix operator}{8} \indexentry{infix notation}{8} \indexentry{function, ~ application}{8} \indexentry{factoring rule}{8} \indexentry{syntax error}{9} \indexentry{bracket}{9} \indexentry{recursive, ~ function}{9} \indexentry{function, recursive ~}{9} \indexentry{recursive, ~ binding}{9} \indexentry{{\bf rec}}{9} \indexentry{equality test}{9} \indexentry{equality sign}{9} \indexentry{==}{9} \indexentry{=}{9} \indexentry{identity test}{9} \indexentry{mutually recursive functions}{9} \indexentry{parallel definition}{9} \indexentry{{\bf and}}{9} \indexentry{function type}{9} \indexentry{type, function ~}{9} \indexentry{function, ~ signature}{9} \indexentry{function, ~ result type}{9} \indexentry{{\bf Fun}}{9} \indexentry{higher-order function}{10} \indexentry{function, higher-order ~}{10} \indexentry{function, ~ as parameter}{10} \indexentry{function, ~ as result}{10} \indexentry{function, ~ application}{10} \indexentry{function, anonymous ~}{10} \indexentry{currying}{10} \indexentry{type, ~ constructor}{10} \indexentry{tuple type}{10} \indexentry{type, tuple ~}{10} \indexentry{tuple}{10} \indexentry{labeled Cartesian product}{10} \indexentry{tuple, ~ field}{10} \indexentry{anonymous identifier}{10} \indexentry{{\bf Tuple}}{10} \indexentry{{\bf Let}}{10} \indexentry{tuple, ~ value}{11} \indexentry{{\bf tuple}}{11} \indexentry{scoping}{11} \indexentry{field name}{11} \indexentry{dot notation}{11} \indexentry{tuple, ~ field selection}{11} \indexentry{type, ~ compatibility}{11} \indexentry{$\alpha$-conversion}{11} \indexentry{field name, non-anonymous ~}{11} \indexentry{field name, anonymous ~}{11} \indexentry{function, ~ as tuple field}{11} \indexentry{method}{11} \indexentry{object-oriented programming}{11} \indexentry{programming, object-oriented ~}{11} \indexentry{tuple, ~ with variant}{11} \indexentry{variant type}{11} \indexentry{type, variant ~}{11} \indexentry{tuple type, ~ with variants}{11} \indexentry{{\bf Tuple}}{11} \indexentry{{\bf case}}{11} \indexentry{{\bf with}}{11} \indexentry{variant}{11} \indexentry{enumeration type}{12} \indexentry{{\bf tuple}}{12} \indexentry{{\bf of}}{12} \indexentry{anonymous binding}{12} \indexentry{variant, ~ field projection}{12} \indexentry{dot notation}{12} \indexentry{case analysis}{12} \indexentry{case analysis, complete ~}{12} \indexentry{{\bf case of}}{12} \indexentry{{\bf of}}{12} \indexentry{case analysis, incomplete ~}{12} \indexentry{{\bf case}}{12} \indexentry{{\bf when}}{12} \indexentry{runtime error}{13} \indexentry{{\bf else}}{13} \indexentry{?}{13} \indexentry{!}{13} \indexentry{scoping}{13} \indexentry{record type}{13} \indexentry{type, record ~}{13} \indexentry{non-anonymous signature}{13} \indexentry{{\bf Record}}{13} \indexentry{record value}{13} \indexentry{non-anonymous binding}{13} \indexentry{{\bf record}}{13} \indexentry{scoping}{13} \indexentry{dot notation}{13} \indexentry{record value, extension of ~}{13} \indexentry{{\bf extend}}{13} \indexentry{{\bf with}}{13} \indexentry{==}{14} \indexentry{recursive, ~ data structure}{14} \indexentry{recursive, ~ data type}{14} \indexentry{{\bf Rec}}{14} \indexentry{supertype}{14} \indexentry{list}{14} \indexentry{recursive, ~ value}{14} \indexentry{dynamic type}{15} \indexentry{type, dynamic ~}{15} \indexentry{data-intensive application}{15} \indexentry{static type checking}{15} \indexentry{type, deferred ~ checking}{15} \indexentry{{\bf Dyn}}{15} \indexentry{{\bf typecase}}{15} \indexentry{{\bf when}}{15} \indexentry{structural equivalence}{15} \indexentry{signature}{15} \indexentry{subtyping}{15} \indexentry{partial specification}{15} \indexentry{subtype, ~ relationship}{15} \indexentry{$<$:}{15} \indexentry{subtype}{15} \indexentry{supertype}{15} \indexentry{non-parametrized type}{15} \indexentry{type, non-parametrized ~}{15} \indexentry{{\bf Ok}}{15} \indexentry{trivial specification}{15} \indexentry{subtype, ~ polymorphism}{15} \indexentry{polymorphism, subtype ~}{15} \indexentry{subsumption principle}{15} \indexentry{subtyping, ~ on predefined types}{15} \indexentry{predefined, subtyping on ~ types}{15} \indexentry{subtyping, ~ on tuple types}{16} \indexentry{tuple type, subtyping on ~s}{16} \indexentry{structural compatibility}{16} \indexentry{subclass}{16} \indexentry{subtype, ~ definition}{16} \indexentry{repeating component}{16} \indexentry{{\bf Repeat}}{16} \indexentry{{\bf open}}{17} \indexentry{repetition of binding}{17} \indexentry{binding, repetition of ~}{17} \indexentry{program extension}{17} \indexentry{subtyping, ~ on variant types}{17} \indexentry{variant type, subtyping on ~s}{17} \indexentry{subtyping, ~ on record types}{18} \indexentry{record type, subtyping on ~s}{18} \indexentry{subsignature}{18} \indexentry{heterogeneous data structure}{18} \indexentry{subtyping, ~ hierarchies}{18} \indexentry{multiple inheritance}{18} \indexentry{subtyping, ~ on function types}{18} \indexentry{function type, subtyping on ~s}{18} \indexentry{contravariance rule}{18} \indexentry{subsignature}{18} \indexentry{precondition}{18} \indexentry{postcondition}{18} \indexentry{covariance relationship}{18} \indexentry{polymorphism}{19} \indexentry{polymorphism, parametric ~}{19} \indexentry{parametric polymorphism}{19} \indexentry{type, ~ parameter}{19} \indexentry{type operator}{19} \indexentry{function, ~ on type level}{19} \indexentry{parametrization}{19} \indexentry{polymorphic function}{19} \indexentry{generic function}{19} \indexentry{function, polymorphic ~}{19} \indexentry{function, generic ~}{19} \indexentry{type, ~ parameter}{19} \indexentry{function, ~ application}{19} \indexentry{type, ~ argument}{19} \indexentry{type, ~ inference}{19} \indexentry{type-independent behavior}{19} \indexentry{bounded parametric polymorphism}{20} \indexentry{polymorphism, bounded parametric ~}{20} \indexentry{subtype, ~ polymorphism}{20} \indexentry{loss of type information}{20} \indexentry{type operator}{21} \indexentry{type operator, simple ~}{21} \indexentry{{\bf Oper}}{21} \indexentry{{\bf Let}}{21} \indexentry{optional value}{21} \indexentry{type operator, ~ application}{21} \indexentry{infix notation}{22} \indexentry{infix operator}{22} \indexentry{type operator, first-order ~}{22} \indexentry{type operator, higher-order ~}{22} \indexentry{type operator, recursive ~}{22} \indexentry{recursive, ~ type operator}{22} \indexentry{polymorphic function}{22} \indexentry{generic code}{22} \indexentry{abstract data type}{23} \indexentry{ADT}{23} \indexentry{stack}{23} \indexentry{abstract data type, polymorphic ~}{23} \indexentry{type operator}{23} \indexentry{polymorphic function}{23} \indexentry{abstract data type, semi-~}{23} \indexentry{semi-abstract data type}{23} \indexentry{subsignature, ~ relationship}{24} \indexentry{tuple, ~ signature}{24} \indexentry{visibility}{24} \indexentry{imperative programming}{24} \indexentry{{\bf let}}{24} \indexentry{constant definition}{24} \indexentry{mutable variable}{24} \indexentry{variable, ~ declaration}{24} \indexentry{variable}{24} \indexentry{variable, mutable ~}{24} \indexentry{{\bf var}}{24} \indexentry{:=}{24} \indexentry{anonymous variable}{25} \indexentry{assignment}{25} \indexentry{{\bf Ok}}{25} \indexentry{{\bf ok}}{25} \indexentry{parameter passing, ~ mechanism}{25} \indexentry{value, ~ parameter}{25} \indexentry{call by value}{25} \indexentry{variable, ~ parameter}{25} \indexentry{call by reference}{25} \indexentry{shared variable}{25} \indexentry{function, ~ overriding}{26} \indexentry{subtyping, ~ for mutable bindings}{26} \indexentry{subsumption rule}{26} \indexentry{read-only access}{26} \indexentry{control structure}{26} \indexentry{sequence}{27} \indexentry{sequential execution}{27} \indexentry{{\bf begin}}{27} \indexentry{block}{27} \indexentry{conditional expression}{27} \indexentry{{\bf if}}{27} \indexentry{{\bf else}}{27} \indexentry{{\bf then}}{27} \indexentry{{\bf elsif}}{27} \indexentry{{\bf orif}}{27} \indexentry{{\bf andif}}{27} \indexentry{loop}{28} \indexentry{iteration}{28} \indexentry{{\bf loop}}{28} \indexentry{{\bf exit}}{28} \indexentry{{\bf Ok}}{28} \indexentry{loop, prechecking ~}{28} \indexentry{{\bf while}}{28} \indexentry{{\bf do}}{28} \indexentry{loop, enumerating ~}{28} \indexentry{{\bf for}}{28} \indexentry{{\bf do}}{28} \indexentry{{\bf upto}}{29} \indexentry{{\bf downto}}{29} \indexentry{loop, ~ variable}{29} \indexentry{exception, ~ handling}{29} \indexentry{exception}{29} \indexentry{exception, ~ raising}{29} \indexentry{exception, ~ package}{29} \indexentry{{\bf try}}{29} \indexentry{exception, standard ~}{29} \indexentry{exception, user-defined ~}{29} \indexentry{exception, ~ argument}{29} \indexentry{{\bf exception}}{29} \indexentry{{\bf with}}{29} \indexentry{exception, ~ type}{29} \indexentry{type, exception ~}{29} \indexentry{{\bf Exception}}{29} \indexentry{exception, ~ signature}{29} \indexentry{{\bf raise}}{29} \indexentry{exception, ~ propagation}{30} \indexentry{{\bf when}}{30} \indexentry{{\bf with}}{30} \indexentry{{\bf then}}{30} \indexentry{exception, ~ reraising}{30} \indexentry{{\bf reraise}}{30} \indexentry{{\bf exit}}{30} \indexentry{{\bf Nok}}{30} \indexentry{polymorphic null element}{30} \indexentry{array}{31} \indexentry{array, ~ index bound}{31} \indexentry{{\bf array}}{31} \indexentry{array, ~ indexing}{31} \indexentry{listfix notation}{31} \indexentry{programming, multi-paradigm ~}{31} \indexentry{naming}{31} \indexentry{binding}{31} \indexentry{typing}{31} \indexentry{programming, ~ style}{31} \indexentry{abstract data type}{31} \indexentry{encapsulation, object-oriented ~}{31} \indexentry{encapsulation}{31} \indexentry{opaque type}{32} \indexentry{type, opaque ~}{32} \indexentry{state-based}{32} \indexentry{state}{32} \indexentry{stack}{32} \indexentry{encapsulation, functional ~}{32} \indexentry{encapsulation, imperative ~}{33} \indexentry{encapsulation, method-based ~}{33} \indexentry{programming, object-oriented ~}{33} \indexentry{object-oriented programming}{33} \indexentry{shared variable}{33} \indexentry{object}{34} \indexentry{method}{34} \indexentry{method overwriting}{34} \indexentry{recursive, ~ data type}{34} \indexentry{modularization}{34} \indexentry{interface}{34} \indexentry{{\bf interface}}{34} \indexentry{export}{34} \indexentry{{\bf export}}{34} \indexentry{{\bf import}}{34} \indexentry{import, ~ed module}{34} \indexentry{import, ~ed interface}{34} \indexentry{qualifying identifier}{35} \indexentry{module}{35} \indexentry{{\bf module}}{35} \indexentry{first class object}{35} \indexentry{import}{35} \indexentry{module, ~ definition}{35} \indexentry{interface, ~ definition}{35} \indexentry{top level}{35} \indexentry{dot notation}{35} \indexentry{library}{36} \indexentry{standard library}{36} \indexentry{{\bf library}}{36} \indexentry{{\bf with}}{36} \indexentry{cyclic dependency}{36} \indexentry{library, enclosing ~}{37} \indexentry{module, hidden ~}{37} \indexentry{interface, hidden ~}{37} \indexentry{{\bf hide}}{37} \indexentry{library, hierarchic ~ structuring}{37} \indexentry{persistent data}{37} \indexentry{reachability}{37} \indexentry{persistence}{37} \indexentry{object store}{37} \indexentry{object store, ~ stabilizing}{37} \indexentry{checkpoint}{37} \indexentry{rollback}{37} \indexentry{garbage collector}{38} \indexentry{external library}{38} \indexentry{library, external ~}{38} \indexentry{library, C ~}{38} \indexentry{C}{38} \indexentry{C library}{38} \indexentry{external language}{38} \indexentry{external function}{38} \indexentry{function, external ~}{38} \indexentry{C function}{38} \indexentry{parameter format}{38} \indexentry{copy-out}{39} \indexentry{callback}{40} \indexentry{copy-in}{40} \indexentry{copy-out}{40} \indexentry{call by reference}{40} \indexentry{formatting convention}{41} \indexentry{naming convention}{41} \indexentry{layout convention}{41} \indexentry{convention}{41} \indexentry{spelling}{42} \indexentry{capitalization}{42} \indexentry{punctuation}{42} \indexentry{space}{42} \indexentry{indentation}{43} \indexentry{nesting level}{43} \indexentry{comment}{44} \indexentry{multiline comment}{44} \indexentry{comment, multiline ~}{44} \indexentry{comment, interface ~}{44} \indexentry{interface, ~ comment}{44} \indexentry{comment, module ~}{44} \indexentry{module, ~ comment}{44} \indexentry{reserved keyword}{46} \indexentry{compilation unit}{47} \indexentry{interface}{47} \indexentry{module}{47} \indexentry{library}{47} \indexentry{binding}{47} \indexentry{value}{47} \indexentry{signature}{48} \indexentry{type}{48} \indexentry{identifier}{49} \indexentry{predefined, ~ identifier}{49} \indexentry{predefined, ~ type}{49} \indexentry{predefined, ~ constant}{49} \indexentry{infix operator}{50} \indexentry{predefined, ~ function}{50} \indexentry{exception}{51}