--- title: Home layout: page class: frontpage link: ghrepo: 'https://github.com/tonyg/syndicate' docs: 'http://docs.racket-lang.org/syndicate/index.html' --- **noun** /ˈsindikit/ 1. a self-organizing group of individuals, companies, corporations or entities formed to transact some specific business, to pursue or promote a shared interest. —[Wikipedia](https://en.wikipedia.org/wiki/Syndicate)
## Overview Syndicate is an Actor-based language offering - pub/sub pattern-based message routing, for mapping events to actors - *dataspaces*, stores for semi-structured data, for managing shared state - *state change notifications* for keeping actors informed of changes in dataspaces - integrated techniques for registering and discovering services and for cleaning up after both graceful and unexpected actor failures - recursive layering of groups of actors, each group with a private dataspace of its own, for organising larger programs Together, these features help programmers organise their interactive programs. ## Example These two actors implement a toy “bank account” actor that listens for `deposit` messages and maintains an `account` balance record in the shared dataspace. The first is written using Syndicate implemented for Racket, and the second using Syndicate for JavaScript. {% capture racket_example1 %}{% include frontpage_racket_example1.md %}{% endcapture %} {% capture javascript_example1 %}{% include frontpage_javascript_example1.md %}{% endcapture %} {% capture racket_example2 %}{% include frontpage_racket_example2.md %}{% endcapture %} {% capture javascript_example2 %}{% include frontpage_javascript_example2.md %}{% endcapture %}