<commit_before># Redux PureScript Example

## About

This project is a work-in-progress example/boilerplate demonstrating my attempt
to write Redux reducers and actions in PureScript.

### Motivation

Browser apps are getting ever so complicated as browsers gain new capabilities
and move from simple document viewers to full-fledged app platforms. We need
better tools as plain JS is just not enough to deal with this complexity.

I love approaches that take front-end development up to eleven, such as
[Reflex](https://github.com/reflex-frp/reflex), [Elm](http://elm-lang.org/), and
[Halogen](https://github.com/slamdata/purescript-halogen), they prevent a large
class of bugs and edge cases, and help you write more robust web apps.
Unfortunately, simple virtual-dom wrappers slow me down a lot, especially when
I'm just prototyping UI's. I end up having to reinvent every single component in
my app. I don't think DOM diffing is the main selling point of React, in fact I
can go as far as to call it an implementation detail. React's real value comes
from its component system which makes creating reusable components very easy and
lets you choose from hundreds of third party components.

Writing your business logic and parts of your app interacting with outside world
(like AJAX calls) in languages like Haskell or PureScript makes a huge
difference. They help you manage side effects, avoid callback hell, create
testable code, and use libs like QuickCheck. In my experience writing pure views
using React is not error prone and doesn't (badly) need these properties. **This
is my attempt to find a sweet spot which can reduce the surface area for bugs to
linger while still benefiting from the great tooling React and Redux ecosystem
offers.**
<commit_msg>Add screenshot showing Redux Devtools integration<commit_after># Redux PureScript Example

![tmpimg](https://cloud.githubusercontent.com/assets/111265/14006914/915b6cee-f17a-11e5-8a29-acae68539852.png)

## About
This project is a work-in-progress example/boilerplate demonstrating my attempt
to write Redux reducers and actions in PureScript.

### Motivation

Browser apps are getting ever so complicated as browsers gain new capabilities
and move from simple document viewers to full-fledged app platforms. We need
better tools as plain JS is just not enough to deal with this complexity.

I love approaches that take front-end development up to eleven, such as
[Reflex](https://github.com/reflex-frp/reflex), [Elm](http://elm-lang.org/), and
[Halogen](https://github.com/slamdata/purescript-halogen), they prevent a large
class of bugs and edge cases, and help you write more robust web apps.
Unfortunately, simple virtual-dom wrappers slow me down a lot, especially when
I'm just prototyping UI's. I end up having to reinvent every single component in
my app. I don't think DOM diffing is the main selling point of React, in fact I
can go as far as to call it an implementation detail. React's real value comes
from its component system which makes creating reusable components very easy and
lets you choose from hundreds of third party components.

Writing your business logic and parts of your app interacting with outside world
(like AJAX calls) in languages like Haskell or PureScript makes a huge
difference. They help you manage side effects, avoid callback hell, create
testable code, and use libs like QuickCheck. In my experience writing pure views
using React is not error prone and doesn't (badly) need these properties. **This
is my attempt to find a sweet spot which can reduce the surface area for bugs to
linger while still benefiting from the great tooling React and Redux ecosystem
offers.**

{'fraction_non_alphanumeric': 0.050312754963285286, 'fraction_numerical': 0.009246668479738918, 'mean_word_length': 4.783018867924528, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 5, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6213469', 'n_tokens_mistral': 976, 'n_tokens_neox': 907, 'n_words': 536}