timeless: An Arrow based Functional Reactive Programming library

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

Timeless is based on a almost completely rewriten Netwire 5 core, plus numerous (not yet for now) extensions to provide an extensive library for Arrowrized Functional Reactive Programming with continuous time semantics.


[Skip to Readme]

Downloads

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, base (>=4.6 && <5), linear, time, transformers [details]
License BSD-3-Clause
Author Rongcui Dong
Maintainer karl_1702@188.com
Category Development
Home page https://github.com/carldong/timeless
Bug tracker https://github.com/carldong/timeless/issues
Uploaded by carldong at 2015-11-06T00:32:37Z
Distributions NixOS:1.0.1.2
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 7493 total (32 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-11-30 [all 3 reports]

Readme for timeless-0.9.0.1

[back to package description]

Introduction

Timeless and Netwire

Timeless is a rewrite on the netwire-5.0.1 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.