(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.