timeless: An Arrow based Functional Reactive Programming library

[ bsd3, deprecated, development, library ] [ Propose Tags ]
Deprecated

Timeless aims to be a comprehensive FRP framework. Version 1 tries to build a system like the book Functional Reactive Programming


[Skip to Readme]

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.8.0.0, 0.8.0.1, 0.8.0.2, 0.8.1.0, 0.8.1.1, 0.9.0.0, 0.9.0.1, 1.0.0.0, 1.0.0.1, 1.0.1.0, 1.0.1.1, 1.0.1.2
Change log ChangeLog
Dependencies ansi-terminal (<0.7), base (>=4.9 && <5), linear (<1.21), time (<1.7), transformers (<0.6) [details]
License BSD-3-Clause
Author Rongcui Dong
Maintainer rongcuid@outlook.com
Revised Revision 1 made by HerbertValerioRiedel at 2016-12-07T20:58:27Z
Category Development
Home page https://github.com/carldong/timeless
Bug tracker https://github.com/carldong/timeless/issues
Uploaded by carldong at 2016-12-07T04:57:49Z
Distributions NixOS:1.0.1.2
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 7493 total (44 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2016-12-07 [all 1 reports]

Readme for timeless-1.0.0.0

[back to package description]

Introduction

Timeless and Netwire

Although the following paragraph is valid for the original fork, it no longer holds for timeless >= 1.0.0. After this version, the only common code between timeless and netwire is the typeclass part. I greatly simplified and purefied the entire Signal class, and hopefully make it much easier to reason about, while keeping all nice properties and syntax about Arrow.

`Timeless` is a rewrite on the [`netwire-5.0.1`](http://hub.darcs.net/ertes/netwire) library, intending to create a simpler interface for easy FRP(Functional Reactive Programming) construction. The core module, `FRP.Timeless.Signal`, `FRP.Timeless.Session`, and `FRP.Timeless.Run` are mostly taken from Netwire, except that the `Wire s e m a b` is simplified to `Signal s m a b`, and several instances (such as `Profuctor`) are stripped away (I have to admit that I don't understand them, so I don't add them until they are REALLY needed). Everything else will be rewritten from scratch, based on my other project, namely `timeless-RPG`, which tries to create a complete RPG game engine framework (For real, this time! Hopefully it will not be abandoned like... well, the python one, the SFML/C++ one, the Ruby one, the second SFML/C++ one, the python one again... you name it) based on SDL2.

The motivation to rewrite netwire as timeless is because netwire lacks proper documentation, and its 5.* version is quite incomplete comparing to 4.*. At the same time, it doesn't seem to be actively developed anymore, so I decide to write most if not all necessary things from scratch to gain a better understanding on, well, everything.

Please do not expect this library to finish before t → ∞. I can only hope that I will not abandon this project like the other ones that I did. I would really like to keep the repo private until I make it rock solid (so that I am less likely to lose motivation due to false satisfaction), but I fear that my hard drive may crash some time in the future (which it just did for my other computer), so I push the repo up now.

What is Timeless? (do a s/is/will be/g in your head, for now)

Timeless is an Arrow based Functional Reactive Programming framework which supports continuous-time semantics. Discrete time events are simulated by "impulse functions". It supports dynamic switching and inhibition. Signals include pure, stateful, and Kleisli functions, which should give a wide range of applications.

Tutorial

Read the FRP.Timeless.Tutorial module, which is written in Literate Haskell. It is a very detailed implementation example of a simple interactive program.