|
The Miser Project Applicative-Procedure λ-Abstraction |
orcmid.github.io>
miser>
lambda>
index.html>
0.6.4 2026-03-24T16:02Z |
In the oMiser computational-model, every ob has an applicative interpretation as a script. Whether viewed as “just an ob” or as a purposive script depends on how one squints at an ob.
In some cases, the intension as a script is likely, since scripts have features that are unexpected in “just” obs. In essence, however, the plain/script intention is revealed only in how an ob is employed in a computation, and every ob can occur as either or both at various points in a script-driven computation.
λ-Abstraction is a systematic approach to transforming script forms into other scripts that can be applied to operands that are then used as scripts, as data, or as both. This is an important and powerful mechanism.
| Views on Abstraction |
|---|
| “We call the symbol λx an abstraction operator, and speak of the function which is denoted by (λx M) as obtained from the expression M by abstraction.” |
| – Alonzo Church [Church1941: p.7] |
| “This process [of extracting common features] can be regarded as a repeated abstraction … and under certain circumstances such abstracting processes can be repeatedly piled on top of one another. Here ‘abstract’ has to be understood in the literal meaning of the word as ‘removing’, as leaving aside everything inessential for the context in question or for a particular purpose … .” |
| – Hans Reichardt [VNR1977: Introduction,p.11] |
| “A high-level computer language abstracts away the machine [so that] the programmer need not be an expert in the machinations of computer hardware … in order to successfully program a computer. High-level languages (HLLs) automate, hide, or otherwise abstract away the underlying operations of the machine … .” |
| – Mark Jones Lorenzo [Lorenzo2019: Introduction, p.13] |
| “Abstraction is about digging deep into a situation to find out what is at its core making it tick. Another way to think of it is about stripping away irrelevant details, or rather, stripping away details that are irrelevant to what we’re thinking about.” |
| – Eugenia Cheng, The Joy of Abstraction [Cheng2023: 2.3 Forgetting Details] |
| “Abstraction is a verb: to abstract is to identify the basic principles and laws of a process so that it can be studied without regard to physical implementation; the abstraction can then guide many implementations. Abstraction is also a noun: An abstraction is a mental construct that unifies a set of objects. Objects of an abstraction have their own logic of relations with each other that does not require knowledge of lower-level details.” |
| – Peter J. Denning. Abstractions [Denning2025: What is Abstraction?] |
Here, the views of Alonzo Church and Peter Denning will be favored. A view of Aristotle will also be adapted: In portrayal of abstractions there are also incidentals (sometimes called accidentals) that accompany expression and manifestation of abstractions. Incidentals are unavoidable, especially in treatment of computation, although it is unfortunate whenever they intrude on grasping what might be considered as pure abstraction. Keep that in mind.
The challenge at the oMiser/oFrugal level is the fact that there are only obs and every ob has an applicative interpretation; any ob can have an intended operational use as both data and script. The computational accomplishment of abstraction for oMiser straddles that ambiguity/flexibility of interpretation.
Pure abstraction operations on obs depend on an ob and its structure without consideration of anything other than the ob “as-is.” The result from Frugalese
σ.s M
is an ob such that, taken as a script applied to operand N,
(σ.s M) N
determines a form of ob M with N substituted everywhere s occurs in M. This is based strictly on ob structure and not on any interpretation of M as anything but just an ob.
Evaluation of (σ.s M) determines an ob different than M having no occurrences of s. (σ.s M) has s abstracted away (from M) in the sense expressed by Alonzo Church, quoted above.
((σ.s M) s) = M as-is.
Also, if s does not occur in M, ((σ.s M) N) = M for any definite ob, N.
In some situations, the s in M can be though of as a variable, although there are no variables, as such, in oMiser applicative scripts. What (σ.s M) accmplishes is to effectively make s “variable” in M by abstracting it away, establishing a script that will substitute any ob for the occurrences of
s in M.
This is distinct from how variables are considered in conventional programming languages and especially in mathematics.
The script for σ, applied to an operand ob, x, derives a new script that will abstract x from any given next operand. In the oMiser implementation of σ, operand x can be any ob, although usual practice is to use lindies (literal symbols) in the handy form σ.x. The operation comes down to matching patterns and rewriting obs to a new form that satisfies the definition of (σ.s M).
The rewriting aspect is more evident with the handy companion functions, δ(s, N) and subst(N, s):
δ(s, N) M = subst(N, s) M = (σ.s M) N = σ(s, M, N)
illustrating various Frugalese forms for achieving the same result, given definite s, N, and M.
These and their intermediate variations, such as subst(.ARG), known as
Curried forms, will be employed in the development of oFrugal utility scripts,
including those for
applicative-procedure abstraction.
Symbolic forms are obs comprised of lindies that have the form of applicative expressions, but are just that, having the form but not having any other intrinsic significance in oMiser. Symbolic forms are just themselves. The benefit, beside as a form of data, is that the form can be transformed into meanigful scripts by abstraction procedures.
Symbolic forms can be read as pseudo-code for applicative expressions. The actual transformation into a script is by abstraction of the symbolic form away.
It is a design principle of the oMiser universal functions ap and eval that when there is no specific interpretation of an ap operator ob, “no change” occurs.
In oMiser, lindies denote distinct individual obs that are invariant under the universal functions. In this case “no change” is accomplished by the mathematical engineering of obaptheory such that when a lindy ob is applied to an operand, the lindy and the operand are preserved: the result is pairing of the lindy and the operand. In this way,
ap(lindy, x) yields (lindy :: x)
using (` x) when x is not also invariant. The result is invariant in this same sense.
The lindy-involved invariant obs are classified as symbolic forms and distinguished by the obaptheory predicate is-symbolic-form(x); symbolic forms are all preserved without change in this manner. The general rules is
ap(symbolic-form, x) = (symbolic-form :: x)
using (` x) when x is neither
ob.NILnor a symbolic form. The result is a symbolic form.
Symbolic forms have the appearance of applicative-procedure scripts and/or constant list structures, perhaps in mixtures.
Harmony of symbolic forms with applicative-operation expressions is supported
by the computational interpretation of f :: g :: x being tantamount to the
Frugalese applicative expression f g x, both being right-associative and
equivalent to f(g x) with lindies f, g, and x taken as terms in an
applicative-operation formula.
For example, the oFrugal expression with lindies a, b, and x
(a x) b x ;
evaluates to
(a :: x) :: b :: x ;
and
!eval (a :: x) :: b :: x ;
the same.
[Author’s Note]: Brief introduction to the two forms.
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 progresses.
| ID | Status | Started | Topic |
|---|---|---|---|
| sigma | 0.4.0 2024-06-24 | 2024-05-05 | σ.s M, subst(L, s), δ(s, L) definitions (authoritative) |
| lambda | 0.5.0 2025-06-12 | 2024-06-20 | λ.x & ρ.p Abstraction Operations (authoritative) |
Using a GitHub account, discuss Miser Project topics in the Discussion section. Propose improvements and removal of defects in Miser Project documentation and software in the Issues section. There are also relevant projects from time to time. For any security concerns, please consult the project security policy.
|
|
You are navigating the Miser Project on Github |
created 2024-01-25 by orcmid |