Table of Contents
The Syndicated Actor Model (SAM)
This information is provided by someone familiar with SAM but little knowledge of Folk. Some claims about Folk may be regrettably inaccurate.
The Syndicated Actor Model (SAM) is a system for working with software actors that is convergent with Folk.
SAM is not a single program or library but a data language and protocols with a set of implementations for different languages. There is a common set of features with each language as varying in how much of the feature set is supported. Implementations with a simple feature set use the Syndicate protocol to communicate with actors in other languages that provided missing functionality.
Similarities
Universe of knowledge
Folk has a database of statements and SAM dataspaces of asserted facts.
Tcl
Folk is primarily written in Tcl and SAM has a basic Tcl implementation.
Reactive paradigm
Both use a reactive programing paradigm:
# Folk When $program has resolved geometry /geom/ { Claim $editor has resolved geometry $geom }
# Syndicate for Tcl ## Folk style during "[$program has resolved geometry @geom #?]" { assert [list $editor has resolved geometry $geom] } ## Native style during "<resolved-geometry $program @geom #?>" { assert [preserves::record resolved-geometry $editor $geom] }
Differences
Composition
Folk is composed as a Tcl program. SAM is a composition of actors conversing using the Syndicate protocol.
Data
Folk uses statements built from tokens.
SAM uses the Preserves data language and relies on compound values such as lists, records (<some-label some fields ...>), dictionaries, and sets.
Tokens
SAM has distinct text-string, byte-string, and symbol data types, which is a pain to deal with in Tcl. Folk uses Tcl values.
What Folk has got
- Intuitive physical interface.
- Intuitive language for programs.
- Physically delineated security.
What Syndicate has got
Dataspaces
Dataspaces3) are a special SAM entities that hold Syndicate assertions of facts for observation by other actors. A program may have any number of internal dataspaces for holding facts. SAM implementations like Sycl do not support local dataspaces but do access dataspaces hosted by other programs.
Folk databases use a trie whereas SAM dataspaces use what is described as a skeleton4).
