(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.
| (ns crepl.tic-tac-toe | |
| (:require [reagent.core :as r] | |
| crepl.atom-sync)) | |
| ;; use this instead of reagent.core/atom to keep the state in sync | |
| (def data (crepl.atom-sync/atom-sync {:turn :X})) | |
| (def win-lines (-> #{} | |
| (into (for [i (range 3)] | |
| (for [j (range 3)] |
(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.