A Scala Functional Reactive Programming (FRP) library, initially based upon Sodium. It is intended for Scala developers writing FRP-driven applications as well as Facsimile simulation model developers.
frp was inspired by the excellent Sodium project. Unfortunately, the primary focus of Sodium development is the Java language, which causes some issues for Scala developers. There is an official Scala port of Sodium, but it is relatively immature; furthermore, we feel it likely that it would make more sense for the Sodium project to support a single JVM-flavor of Sodium (covering languages such as Clojure, Kotlin, Scala, etc. As a language designed for functional programming, we feel that a native Scala FRP library can be simpler and easier to maintain than a library written in Java.
Another minor point is that we feel that certain of Sodium's class and primitive names are inconsistent with Scala
conventions, or have associations that would cause confusion for simulation developers. For example, the Sodium Cell
class is called Property
in frp, while Sodium's Stream
is renamed to PropertyStream
.
frp is the framework used by Facsimile for handling both simulation and user-interaction events.