SynapseGrid alternatives and similar packages
Based on the "Functional Reactive Programming" category.
Alternatively, view SynapseGrid alternatives based on common mentions on social networks and blogs.
-
RxScala
RxScala – Reactive Extensions for Scala – a library for composing asynchronous and event-based programs using observable sequences
CodeRabbit: AI Code Reviews for Developers

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of SynapseGrid or a related project?
README
SynapseGrid
SynapseGrid is an original approach to implement functional reactive programming paradigm in Scala. The library is based on a solid foundation of Petri nets.
A few words about what SynapseGrid is:
- framework for constructing systems that are:
- reactive
- event-driven
- resilent
- it resembles other modern event-driven architectures (ScalaRx, Akka Streams, Spark, etc.).
Feature highlights
- SynapseGrid allows function composition of "multifunctions" (functions with a few inputs and outputs). It is more flexible than monads composition of Kleisli Arrows.
- Strictly typed message handling in Akka actors (more natural than in Typed actors or Typed Channels).
- Multi input/multi output functions (multifunctions).
- Systems process portions of information ASAP. The grid can be the base of real time systems.
- It is possible to nest subsystems (like matreshkas) creating modular systems.
- Declarative composition in the form of DataFlow diagram.
- Easy to use DSL: val a = contact[String]("a") val b = contact[String]("b") val c = contact[Char]("c") a -> b flatMap (.split("\s+")) a -> c flatMap (.toCharArray) inputs(a) outputs(b,c)
- Dependency injection replacement (accompanied with Scala traits).
- DataFlow diagram for a system can be created easily — system.toDot(): [example1 system picture](docs/images/example1.png) [example2 system picture](docs/images/example2.png) [example3 system picture](docs/images/example3.png)
For details see [README in English](docs/README.EN.md).
Getting started
Add a dependency to your build:
gradle:
compile ['ru.primetalk:synapse-grid-core_2.11:1.4.7', 'ru.primetalk:synapse-grid-akka_2.11:1.4.7']
or compile ['ru.primetalk:synapse-grid-core_2.11:1.4.7', 'ru.primetalk:synapse-grid-akka_2.11:1.4.7']
sbt:
libraryDependencies += "ru.primetalk" %% "synapse-grid-core" % "1.4.7" libraryDependencies += "ru.primetalk" %% "synapse-grid-akka" % "1.4.7"
(or any other build system: group: ru.primetalk, artifactId: synapse-grid-core, version: 1.4.7)
Travis build status
See also (English)
- [Walkthrough](docs/README.EN.md).
- [Motivation for SynapseGrid](docs/SpeechPortalMotivation.RU.md).
- [License (BSD-like)](LICENSE.md).
- [Subsystems](docs/Subsystems.EN.md).
- Blog about SynapseGrid
- [Distrubuted systems](docs/Distributed.EN.md)
- [Typed frames](docs/Frames.EN.md).
См. также (See also in Russian)
- [README по-русски](docs/README.RU.md).
- [Actors support (in Russian)](docs/Actors.RU.md).
- [Лицензия](docs/LICENSE.RU.md).
- [Работа с подсистемами](docs/Subsystems.RU.md).
- Blog about SynapseGrid (en)
- [Распределённые системы](docs/Distributed.RU.md).
- [Строго типизированные фреймы](docs/Frames.RU.md).
- Хабрахабр: Строго типизированное представление неполных данных
*Note that all licence references and agreements mentioned in the SynapseGrid README section above
are relevant to that project's source code only.