(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.
cons = fn (a, b) -> fn x -> x.(a, b) end end | |
car = fn (p) -> p.(fn (q, _) -> q end) end | |
cdr = fn (p) -> p.(fn (_, q) -> q end) end | |
each = fn (list, func) -> | |
iter = fn (list, func, next) -> | |
(fn (a, nil) -> func.(a) | |
(a, b) -> func.(a); next.(b, func, next) | |
end).(car.(list), cdr.(list)) | |
end | |
iter.(list, func, iter) |
(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.
REAL WORLD SCENARIO (blinking lights)
Mr. Tom Dev wants to remote pair program with Mr. Todd Programmer. Tom is in New York, Todd is in San Francisco. They’re working on yet another blog written in Ruby. Tom fires up Rubymine, Todd fires up TextMate.
Todd’s editor quickly alerts him that he is connected with Tom and that their projects are out of sync. The plugin gives them each the option of using Tom’s file versions, Todd’s files, or performing a git pull request. They both do a git pull and are back in sync.
Todd quickly opens the User model in Rubymine with cmd-shift-N and Todd quickly sees that same file opened in Textmate. Todd then highlights a method that has been failing a test and Tom sees that highlight. Todd makes the change to the file, clicks cmd-s, and that file change is synced over to Tom.
Tom thought there was a secondary change needed in the Profile model, so he hits cmd-T, opens the Profile model and Todd sees that file opened in Rubymine. Todd tells Tom that he’s smoking catn
<html> | |
<head> | |
<title>Hello</title> | |
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> | |
<style type="text/css"> | |
html { height: 100% } | |
body { height: 100%; margin: 0px; padding: 0px } | |
</style> | |
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> |