The Miser Project |
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 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.
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.
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,
obapx.proc
, p) = proc(p)obapx.def
, s) = def(s)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).
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.
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.
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).
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.
You are navigating the Miser Project on Github |
created 2024-01-31 by orcmid |