Massimo Nocentini

This site is a collection of Massimo Nocentini's papers, notes, memos and source code, in the spirit of [1].

Tue May 20 13:04:12+0200 2025

Creative Commons LicenseCreative Commons LicenseCreative Commons License

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License

Table of contents
  1. A booklet on Data Structures and, in general, on Smalltalk
  2. Symbolic programming: Wolfram engine bindings
  3. Probabilistic Programming: the Hansei language
  4. Bootstrapping unit testing frameworks, test driving themselves!
  5. On Scheme: continuations, the magnificents!

You can reach me via the following contacts:

After that, we can now proceed with some stuff I worked/working on.

1. A booklet on Data Structures and, in general, on Smalltalk

I have a working in progress booklet [6] about data structures, using the Pharo dialect.

2. Symbolic programming: Wolfram engine bindings

We have a layer targeting the Scheme language [7] to exchange data and evaluate symbolic expressions with the Wolfram engine [8]

3. Probabilistic Programming: the Hansei language

We present in [9] a test suite to understand the system defined in the reference page [10]. Quoting author's words:


HANSEI is the the embedded domain-specific language for probabilistic programming: for writing potentially infinite discrete-distribution models and performing exact inference, importance sampling and inference of inference.

We also have a symbolic variant of the famous wet grass model in [11] and more in depth tests about the variable elimination optimization in [12].

4. Bootstrapping unit testing frameworks, test driving themselves!

Bootstrapping a unit test framework, test-driven itself in Scheme [13], in Lua [14] and in Python [15]; this quote shows the message:


...it's a kind of self-brain surgery

My own learning tests for Scheme [16] to understand the Scheme language, via the chicken interpreter.

5. On Scheme: continuations, the magnificents!

From the R6RS Ballot, reported in [17]:


Scheme occupies a unique niche. A research niche and an educational niche. It is not a language. Not R6RS, not R5RS, not R4Rs. It is an idea. Or a collection of ideas. It is a framework. It is a way of thinking. It is a mindset. All of this is embodied in an ever growing family of languages or dialects, not a single language. It is a virus. It is the ultimate programming-language virus. The cat is already out of the bag and there is no way to get it back in. Once someone gets the mindset, they can implement their own implementation, which is often a slightly different dialect. This has happened hundreds if not thousands of times over. (Probably hundreds of thousands or more if one counts all the people doing homework for Scheme courses.) This happens for Scheme in a way that it doesn't for any other language. Scheme has also served as a testbed for innovated language ideas more than any other language, either by fueling such innovation or by adopting such innovation. I'm talking about the most major innovations of all of computer science. Things like: scoping, nondeterminism, parallelism, lazy evaluation, unification, constraint processing, stochastic computation, quantum computation, automatic differentiation, genetic programming, types, automated reasoning, ... just to name a few.
Auxiliary definitions

Basic helpers [18], call with current continuation [19], non deteministic with cuts [20] and delimited continuations [21].


References
[1] Alexander A. Stepanov's home page
[2] massimo.nocentini@gmail.com
[3] massimo.nocentini@unifi.it
[4] https://github.com/massimo-nocentini
[5] Public RSA key
[6] Booklet on data structures, in Pharo Smalltalk.
[7] Wolfram engine bindings
[8] Wolfram Engine
[9] Tests on the Hansei dsl
[10] Hansei dsl for probabilistic programming
[11] Tests on the Hansei dsl, symbolic
[12] Variable elimination in Hansei: a symbolic point of view
[13] Bootstrapping a unittest framework in Scheme
[14] Bootstrapping a unittest framework in Lua
[15] Bootstrapping a unittest framework in Python
[16] My own Scheme learning tests
[17] https://wiki.call-cc.org/elevator-pitch
[18] Tests on helper definitions
[19] Tests on undelimited continuations
[20] Tests on Non determinism
[21] Tests on delimited continuations