Monadic Piles of Coconuts

After reading the “coconut” problem over on my friend’s blog, I thought it would be fun to solve it with a silly brute force approach. First, go read his post and then come back here. let take n =     let m = n – 1 // give one to the monkey     if m…


Towers of Hanoi

A friend of mine is starting a pretty fun looking math blog. His first post is on Towers of Hanoi. I’m sure he’ll tackle it with some slick mathematics, but my usual M.O. is to convert everything to code. I remember this “Hello Recursive World” from SICP in Scheme; looks better in F#: let rec hanoi…


TinyRPN Calculator

It’s fun dorking around with the HP 41CX emulator on the iPhone. It’s a near-perfect rendition. I forgot how much I loved RPN calculators. The 48GX looks even more interesting with Reverse Polish Lisp but I haven’t figured out how to use it yet. The 41CX, on the other hand, is an old friend. 🙂…


Favorite Talks

Talks Alan Kay’s TED talk about teaching children


Favorite Posts

Tangible Functional Programming Conal Elliot talk: Values:  


Favorite Quotes

“Beware of bugs in the above code; I have only proved it correct, not tried it.” – Donald Knuth “Language and program evolve together. Like the borders between two warring states, the boundary between language and program is drawn and redrawn, until eventually it comes to rest along the mountains and rivers, the natural frontiers…


Babbage’s Difference Engine

  Babbage’s Difference Engine is pretty fascinating. I had wanted to go see the one on display at the Computer History Museum in Mountain View, but now Nathan Myhrvold has the thing back in his living room! Maybe I’ll build one out of Legos to keep in my office.   The physical engineering is amazing…


Project Euler Problem #7

Find the 10001st prime let naturals = Seq.unfold (fun i -> Some(i, i + 1))let primes =    naturals 2 |> Seq.filter (fun n ->        seq { (sqrt (float n)) }        |> Seq.forall (fun x -> n % x <> 0))Seq.nth 10000 primes


Project Euler Problem #6

Difference between sum of the squares and the square of the sum of 1 – 100:   (fun ns ->     let sqr x = x * x     (sqr (List.sum ns)) – ( sqr ns |> List.sum) ) [1..100]


Project Euler Problem #5

Smallest number divisible by each of 1 to 20:   First cut (takes almost an hour to execute!): let isFactor n d = n % d = 0 {1..Int32.MaxValue} |> Seq.find (fun n -> [1..20] |> List.forall (isFactor n))   Second cut (takes a millisecond!):   let rec gcd a b = if b =…