We will be comparing the following DB libraries:
- HRR
- Opaleye
- Persistent + Esqueleto
- Groundhog
- postgresql-simple (and postgresql-transactional)
| Bacon = require('baconjs') | |
| Imm = require('immutable') | |
| React = require('react') | |
| window.Actions = | |
| changeFirstName: new Bacon.Bus() | |
| changeLastName: new Bacon.Bus() | |
| changeCountry: new Bacon.Bus() | |
| addCountryBird: new Bacon.Bus() | |
| addFriend: new Bacon.Bus() |
| /* | |
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <title>VirtualDOM Example</title> | |
| </head> | |
| <body> | |
| <div id="output"></div> |
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
| {-# LANGUAGE EmptyDataDecls #-} | |
| {-# LANGUAGE FlexibleContexts #-} | |
| {-# LANGUAGE FlexibleInstances #-} | |
| {-# LANGUAGE GADTs #-} | |
| {-# LANGUAGE OverloadedStrings #-} | |
| {-# LANGUAGE QuasiQuotes #-} | |
| {-# LANGUAGE TemplateHaskell #-} | |
| {-# LANGUAGE TypeFamilies #-} | |
| {-# LANGUAGE TypeSynonymInstances #-} | |
| {-# OPTIONS_GHC -fno-warn-orphans #-} |
| .done { | |
| opacity: 0.5; | |
| text-decoration: line-through; | |
| } |