miser

The Miser Project
obapx: Extended Universal Function Facilities

miser> oMiser>



index>
0.1.2 2024-02-04T21:48Z

This topic covers the introduction of extended applicative interpretations as additions to the obap specification. Implementation in computational manifestation is addressed as part of oMiser and oFrugal coverage. Perhaps the most-evident impact of these extensions is on the determination of canonical forms. There are dramatic alterations required for CFob.

The Extension Principle

The approach to extensions involves establishment of individuals having special applicative interpretations. They remain distinguishable while having specific interpretations, as if they are new/derived primitives.

Extensions are intended to provide the means by which oMiser can operate in an interactive or coordinated manner such as communication with seemingly-external/-separate entities. Having a pseudo-random generator of particular ob patterns is an example, as are other cases where the possession of a state is understood, whether or not such state is completely known.

Extensions shall preserves immutability and distinguishability of individuals. It is part of the Miser Project research agenda that this be strived for and any ultimate limitations be understood.

An Illustrative Conservative Extension

For oMiser, an extension is conservative if everything the extension introduces can be accomplished without it. In pragmatic terms, the extension may afford more expressibility in use of oMiser (and thereby, oFrugal) and there may also be useful improvements in operational performance.

Such an extension under consideration consists of functions that introduce individuals having specified scripts as their applicative interpretations.

The proc/def extension

In the case of the proc extension, the idea is that proc(p) will be an individual such that obapx.ap(proc(p), x) is the same as obap.ap(p, x). There are two consequences.

First, proc(p) is an individual and the script is generally not exposed. λ-abstraction does not penetrate into p although it is possible to abstract proc(p) itself, just as non-primitive individuals can be so-abstracted.

Pragmatically, p is not entirely hidden, since

proc(p) = proc(q) ⇔ p = q

and the inverse of proc, dev, is also introduced:

dev(proc(p)) = p

If s is not proc(p) for some p, then

dev(s) = s

The specific individuals whose applicative interpretations correspond to proc and def are obapx.proc and obapx.def. That is,

To signify the presence of a proc individual in a CFob (and hence in oFrugalese), a specific notation is required to signify the defined proc. It’s proposed to write the CFob of proc(p) in a special form such as proc!(CFob of p).

Practical considerations

The proc/def arrangement provides a means, in oMiser, for procedurally determining whether an individual is a proc or not. It is also the case, for oMiser, that comparison of individuals is near-instantaneous and so is any def(s) = s determination.

It may also be the case that occurrence of proc(s) is also a hint for acceleration of the applicative interpretation of s in oMiser. It may be possible to over-use this implementation-dependent facility, however.

The proc/dev pattern will be adaptable to other situations that may arise in expanding the computational utility of oMiser operations. These will all be pragmatic (and mathematically engineered) features.

Quasi-Conservative Extensions

In computational settings, there are practical needs for facilities that do not appear to fit the conservative-extension pattern of proc/def. Most examples involve the idea of alterable state, including ones where state cannot be entirely known, devolving to observable effects instead.

In no case are individuals ever changed. Applicative interpretations will be the same, with changes reflected in the determination of a separate distinct individual as the derived result. The mathematical challenge is preservation of well-definedness. Illustration and navigation of these challenges will be expanded upon as specific extensions are devised.

Unfathomable Cases

There may be features considered to be extensions that defy characterization as mathematically-determined. They may be contingent on unknown reality and will perhaps be disqualified from oMiser. To the degree that such entitites are tolerated as a practical requirement, it is of interest to find ways to quarantine such impurities, isolating their scope and impact from the applicability of mathematical reasoning (or, sadly, vice versa).

Catalog (Specimen, xYYMMNN Content TBD)

This placeholder links to raw materials and notes, including text files. There will be organized folios of content as consolidation of documentation on the web and development of the oMiser/oFrugal software progresses.

ID Status Started Topic
       
Diary & Job Jar undated 2024-01-31 Construction Notes
       
Discussions     Various

I invite discussion about Miser Project topics in the Discussion section. Improvements and removal of defects in this particular documentation can be reported and addressed in the Issues section. There are also relevant projects from time to time.

Hard Hat Area You are navigating the Miser Project on Github

created 2024-01-31 by orcmid