oMiser.txt 0.1.3 UTF-8 2024-01-27 *---|----1----|----2----|----3----|----4----|----5----|----6----|----7----|--* The Miser Project Code ====================== OMISER CONCEPTION, DEFINITION, AND IMPLEMENTATION NOTES ------------------------------------------------------- IMPORTANT NOTICE: The oMiser and oFrugal text-file materials are being refactored under docs/ where they are organized in conjunction with web materials. This version is a place-holder and job jar on the docs/ side of this effort. Construction Structure under docs/ provides the necessary manifest. There will also be web-based Job Jars and Diaries. This page will be whittled down as the refactoring progresses. The original version of this file is tombstoned at . *---|----1----|----2----|----3----|----4----|----5----|----6----|----7----|--* Copyright 2018-2024 Dennis E. Hamilton Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. *---|----1----|----2----|----3----|----4----|----5----|----6----|----7----|--* ATTRIBUTION Hamilton, Dennis E. oMiser Conception, Definition, and Implementation Notes. Miser Project text file oMiser.txt version 0.1.3 dated 2024-01-27, available on the Internet as a version of . *---|----1----|----2----|----3----|----4----|----5----|----6----|----7----|--* TODO * 2023-11-06 Use "NBG" for von Neumann, Bernays, Goedel set theory and how it is used in model theory, although we will stay in the finitism realm for the domains of structures. * There is a note on Goedel vol.1 that points to Goedel accepting Turing Completeness (in a remark by Kleene) with respect to Church's Thesis. I should mention that to Edward. * 2023-11-05 There needs to be a way to save the complete state of oFrugal. That means the symbol table, not just a single entity. It basically saves every ob that is reachable in oFrugal at the point of save/suspension. This might not be a 1.0 or 1.1 thingy. Another way would be to export the def obs in some manner and also economize on shared obs in the reload. * 2024-01-27 Many of the TODOs here are about implementation of the oMiser run-time and its integration. Development of the algorithms and their profiling is here, with releases and various code provided under the GitHub Miser dev/ and the docs/dev/ locations. Reflect on index.htm. * Connect to internet-accessible resources and availability of stable materials when available. TODOs and related work can be separated then. * Work up a COM-based interface protected implementation and see whether reference-counting is a workable avoidance of garbage collection by other means. * Check out Henry Baker's approach to using stack drag as a way to have rapid pair construction with only longer-lived material swept to the heap. This is something he and I talked about at the first AAAI meeting at Stanford. I had a skeletal Z80 implementation. I think the Chicken Scheme one may be very desirable for x64 implementations. * Deal with experimental speed-up devices, including tail recursion, to determine whether they are effective storage-reduction measures. There are other accelerator techniques that may cooperate with this. It remains open to me whether tail recursion is detectable in obap.ap. * Consider a lab structure alongside the main dev and source-code structures. * Address platform variety (e.g., C/C++ versus .NET, Java, etc.) and also using oMiser at a binary level beneath systems such as Python. * Emphasize that this is a machine, machine data structure, and machine- language in the conventional sense. And, at the oMiser/oFrugal level, we are basically seeing an assembler (reader) and a disassembler (printer) of the oMiser machine code. Where oFrugal becomes more interesting may be with Proc and maybe something about data structures. * The Golden Geek treatment of the connection between these could perhaps be handled with an oMiser.md page here. That could also address the programming notions. It ties in the development of the "reference notation" for obs and the two sugared forms: lists, and expressions. See for now. * The grammar for reference notation is also needed, along with the oFrugal REPL additions (saving and substitution, etc.). * When representation, interpretation, manifestation, implementation, and simulation are worked out more clearly, review these materials for consistent usage and links to related resources of the project and and elsewhere, especially ones of reference/historical value. * There are a number engineering and programming matters in these TODOs that are best moved to an alternative place, such as engineering.txt for the overall project. * The fundamental reference that is a historical inspiration for obs and oMiser is [McCarthy1960] McCarthy, John. Recursive functions of symbolic expressions and their computation by machine, Part 1. Comm. ACM 3, 4 (April 1960), 184-195, https://doi.org/10.1145/367177.367199 * A related article of possible interest in accelerators or possibly other situations is [Perlis1960] Perlis, A.J., Thornton, Charles. Symbol manipulation by threaded lists. Comm. ACM 3, 4 (April 1960), 195-204, https://doi.org/10.1145/367177.367202 * The Strachey General-Purpose Macro Processor (McG) is also inspirational, as is the Burge and Landin work on applicative systems and ISWIM. * How did the Mapping of ALGOL 60 to the lambda calculus deal with assignment operations and storage state? It looks like continuations are fruitful, if the compute expression of F# is informative. I still haven't got my head around it (2023-01-11). * EMERGENCE OF TYPES AND "OBJECTS" is a key matter. It is at the heart of the stored-program model and it serves to illustrate the limits of computable functions to within denumerability. In some sense, the larger the domains of discourse (in cardinality terms), the computable functions are a tinier and tinier subset. * INTERPRETATION MATTERS and some constructions are strictly mystery meat in the absence of any expression of intended interpretation. I suppose at some point one arrives at a perspective on category theory, although I will need to understand Eugenia Chang's portrayal better. * Use the ability to create interpretations over a sufficient model of computation to motivate the narrative about oMiser and what works for it. The lindy trace hack and an extended syntax for it get around the need for other data types, since lyndies give us sufficient literals for atoms in strings (list structures). *---|----1----|----2----|----3----|----4----|----5----|----6----|----7----|--* 0.1.3 2024-01-27T19:30Z Clean up TODOs and connection with tombstone. 0.1.2 2023-11-06T18:59Z Note about NBG and how it might come up. 0.1.1 2023-11-05T21:32Z Additional TODO about save/suspension in oFrugal. 0.1.0 2023-11-01T18:55Z Transposition from oMiser/oMiser.txt to docs/oMiser.txt as part of refactoring Miser Project materials. *** end of oMiser.txt ***