The Miser Project |
miser>
obap>
index>
0.3.8 2024-12-23T18:09Z |
Views on Abstraction |
---|
“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] |
“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] |
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 abstraction σ.s M
is a script for a function such that (σ.s M) N
determines a form of M
with
N
substituted everywhere s
occurs in M
. This is based strictly on ob
structure and not on any applicative interpretation of M
.
Although σ.s M
determines an ob, that ob has no occurrences of s
. In this
sense, σ.s M
has s
abstracted away; (σ.s M) s
determines M
as-is.
There are handy companion functions, δ(s, N)
and subst(N, s)
, for use in
particular circumstances, often when one or more particular operands are known
in advance.
δ(s, N) M = subst(N, s) M = (σ.s M) N = σ(s, M, N)
also illustrating various Frugalese forms for achieving the same result.
These and their intermediate variations, such as subst(.ARG)
, known as
Curried forms, will be employed in the development of oFrugal utility scripts.
Symbolic forms are obs having the appearance of applicative expressions and/or constant list structures. Intended interpretations for them are not self-evident, however suggestive the form might be. Purpose for a symbolic form is revealed only in the context of its usage.
The harmony of symbolic form and applicative-expression, when that
interpretation is the case, is encouraged 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)
were the
lindies f
, g
, and x
taken to be variables for appropriate obs.
The oFrugal definitions of applicative-procedure abstraction rely on that structural nicety, transforming symbolic forms into applicative-function scripts in a manner that supports confirmation of correct operation.
When a symbolic form is evaluated or applied directly, the symbolic form is preserved.
For example, the oFrugal expression
(a x) b x ;
evaluates to
(a :: x) :: b :: x ;
and
!eval (a :: x) :: b :: x ;
the same. This hinges on the mathematical engineering by which scripts such
as !eval x :: y
with lindies x
and y
are evaluated as obap.ap(x,y)
with result x :: y
in accordance with the distinguishing of symbolic forms
in the definition of obap.ap.
The oMiser computational model’s application function treats lindies as individuals having no definable/separate applicative interpretations.
Lindies are taken as individual symbolic forms.
When application operator p
and operand x
are both symbolic forms, the
result of application is the composed symbolic form (p) :: x
.
When p
is a symbolic form, (p)::.NIL
is a symbolic form. Otherwise
when only p
is a symbolic form, the result of application is (p) :: ‵ x
,
itself a symbolic form even though x
may be an ob of any form.
As is done in the examples (2.2.1, above), symbolic forms are usually written in canonical form, omitting unnecessary parentheses.
[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 |
lambda | 0.4.0 2024-06-24 | 2024-06-20 | λ.x & ρ.p Abstraction Operations |
c000000 | undated | 2024-01-25 | Construction Diary & Job Jar |
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-25 by orcmid |