-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5f3867a
commit c6bac3b
Showing
2 changed files
with
4 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
{"name":"Shafty","tagline":"ClojureScript functional reactive programming library.","body":"# shafty\r\n\r\nClojureScript functional reactive programming library inspired by [Flapjax](http://www.flapjax-lang.com/). Shafty provides the core abstractions provided by Flapjax for dataflow programming with reactive values, however does not provide the DOM manipulation abstractions provided by Flapjax.\r\n\r\n## Disclaimer\r\n\r\nShafty is currently under development and the API is subject to change.\r\n\r\nGet in touch if you are interested in helping out.\r\n\r\n## Motivation\r\n\r\nShafty aims to bring a native implementation of composable behaviours and event streams to ClojureScript as a micro-library which can be used to build larger reactive applications. The long-term goal is to provide a Clojure implementation which can be used in both server-side and client-side applications.\r\n\r\n## Concepts\r\n\r\n### Events\r\n\r\nEvents represent time-varying functions which have a finite set of\r\noccurences over time.\r\n\r\n### Behaviours\r\n\r\nBehaviours are time-varying functions which constantly have a value.\r\nDerive a behaviour from an event, or generate a receiver to watch a\r\nparticular DOM element, such as an input field.\r\n\r\n## API Reference\r\n\r\nAs Shafty is heavily inspired by Flapjax, provided below is an API reference outlining which parts of the Flapjax API have been implemented and what the equivalent function name is in Shafty. Some of the functions have similar mappings leveraging Clojure's protocols.\r\n\r\nThe combinators below appear in the order of the appearance of each in the Flapjax implementation.\r\n\r\nF.Event | shafty.core.Event | F.Behavior | shafty.core.Behaviour\r\n--------------- | ----------------- | ------------ | ---------------------\r\nsendEvent | send! | startsWith | hold!\r\nmergeE | merge! | valueNow | deref (cljs)\r\nconstantE | constant! | changes | changes!\r\nbindE | bind! | switchB | switch!\r\nmapE | map! | timerB | held-timer!\r\nnotE | not! | delayB | delay!\r\nfilterE | filter! | sendBehavior | send!\r\nonceE | once! | liftB | lift! / lift2!\r\nskipFirstE | skip-first! | notB | not!\r\ncollectE | collect! | blindB | blind!\r\nswitchE | switch! | calmB | calm!\r\ndelayE | delay!\r\nsnapshotE | snapshot!\r\nfilterRepeatsE | filter-repeats!\r\ncalmE | calm!\r\nblindE | blind!\r\ntimerE | timer!\r\n\r\n## References\r\n\r\n* Elliott, [_Push-Pull Functional Reactive Programming_](http://dl.acm.org/citation.cfm?id=1596643)\r\n* Meyerovich, [_Flapjax: Functional Reactive Web Programming_](http://www.cs.brown.edu/research/pubs/theses/ugrad/2007/lmeyerov.pdf)\r\n* Meyerovich, Guha, Baskin, Cooper, Greenberg, Bromfield, Krishnamurthi, [_Flapjax: A Programming Language for Ajax Applications_](http://dl.acm.org/citation.cfm?id=1640091)\r\n\r\n## The Name\r\n\r\n* [Shafty, Island Tour, '98, Providence, RI.](http://www.youtube.com/watch?v=AZO2_u0jmZk)\r\n\r\n## License\r\n\r\nCopyright (C) 2012 Christopher Meiklejohn.\r\n\r\nDistributed under the Eclipse Public License, the same as Clojure.\r\n","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."} | ||
{"name":"Shafty","tagline":"ClojureScript functional reactive programming library.","body":"# shafty\r\n\r\nClojureScript functional reactive programming library inspired by [Flapjax](http://www.flapjax-lang.com/). Shafty provides the core abstractions provided by Flapjax for dataflow programming with reactive values, however does not provide the DOM manipulation abstractions provided by Flapjax.\r\n\r\n## Disclaimer\r\n\r\nShafty is currently under development and the API is subject to change.\r\n\r\nGet in touch if you are interested in helping out.\r\n\r\n## Motivation\r\n\r\nShafty aims to bring a native implementation of composable behaviours and event streams to ClojureScript as a micro-library which can be used to build larger reactive applications. The long-term goal is to provide a Clojure implementation which can be used in both server-side and client-side applications.\r\n\r\n## Concepts\r\n\r\n### Events\r\n\r\nEvents represent time-varying functions which have a finite set of\r\noccurences over time.\r\n\r\n### Behaviours\r\n\r\nBehaviours are time-varying functions which constantly have a value.\r\nDerive a behaviour from an event, or generate a receiver to watch a\r\nparticular DOM element, such as an input field.\r\n\r\n## API Reference\r\n\r\nAs Shafty is heavily inspired by Flapjax, provided below is an API reference outlining which parts of the Flapjax API have been implemented and what the equivalent function name is in Shafty. Some of the functions have similar mappings leveraging Clojure's protocols.\r\n\r\nThe combinators below appear in the order of the appearance of each in the Flapjax implementation.\r\n\r\nF.Event | shafty.core.Event | F.Behavior | shafty.core.Behaviour\r\n--------------- | ----------------- | ------------ | ---------------------\r\nsendEvent | send! | startsWith | hold!\r\nmergeE | merge! | valueNow | cljs.core.deref\r\nconstantE | constant! | changes | changes!\r\nbindE | bind! | switchB | switch!\r\nmapE | map! | timerB | timer! / hold!\r\nnotE | not! | delayB | delay!\r\nfilterE | filter! | sendBehavior | send!\r\nonceE | once! | liftB | lift!\r\nskipFirstE | skip-first! | notB | not!\r\ncollectE | collect! | blindB | blind!\r\nswitchE | switch! | calmB | calm!\r\ndelayE | delay!\r\nsnapshotE | snapshot!\r\nfilterRepeatsE | filter-repeats!\r\ncalmE | calm!\r\nblindE | blind!\r\ntimerE | timer!\r\n\r\n## References\r\n\r\n* Elliott, [_Push-Pull Functional Reactive Programming_](http://dl.acm.org/citation.cfm?id=1596643)\r\n* Meyerovich, [_Flapjax: Functional Reactive Web Programming_](http://www.cs.brown.edu/research/pubs/theses/ugrad/2007/lmeyerov.pdf)\r\n* Meyerovich, Guha, Baskin, Cooper, Greenberg, Bromfield, Krishnamurthi, [_Flapjax: A Programming Language for Ajax Applications_](http://dl.acm.org/citation.cfm?id=1640091)\r\n\r\n## The Name\r\n\r\n* [Shafty, Island Tour, '98, Providence, RI.](http://www.youtube.com/watch?v=AZO2_u0jmZk)\r\n\r\n## License\r\n\r\nCopyright (C) 2012 Christopher Meiklejohn.\r\n\r\nDistributed under the Eclipse Public License, the same as Clojure.\r\n","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."} |