# Code Monkey Have Fun

Posts
• #### If you can’t beat ‘em, join ‘em

I’ve had fun making the little DCPU emulator (past couple of posts: 1 , 2 ), but sadly, I’ve had no time to make a Forth for it. But hey, Matt Hellige has already done it ! I just took his GoForth and got it up and going. Just grab the image from here...
• #### Rinse and Recurse

[Part 4 of the FScheme series ] Recursive ‘let’ Normal ‘let’ can’t be used to bind names to recursive expressions (ones referring back to the names) because the expressions end up being evaluated in the calling environment...
• #### Functional I/O (including “I” this time)

[Part 13 of the FScheme series ] Now to add input to our Functional I/O system; following up on the previous post . We already had bouncing balls so how ‘bout we add a mouse-controlled paddle and make a primitive “Pong”? Mouse...
• #### 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...
• #### Project Euler Problem #9

Pythagorean triplet where a + b + c = 1000 (2, 1) |> Seq.unfold ( fun (m, n) – >     Some([m * m - n * n; 2 * m * n; m * m + n * n],         if n + 1 < m then m, n + 1 else m + 1, 1)) |> Seq...
• #### Language vs. Library

[Part 9 of the FScheme series ] Primitives Perhaps this post should have gone along with the one about macros and how Lisp is a “programmable programming language.” The common tension in any language or runtime design is how much to...
• #### Oh, The Humanity!

[Part 8 of the FScheme series ] 'set', 'begin', 'define' Here we implement chapters 10 and 11 of Bill Hails’ book . We’re about to do something hideous and horrible to the language (and to our interpreter). We’re about to add assignment...
• #### What ‘letrec’ Can’t Do

[Part 5 of the FScheme series ] In this series I’m glossing over all the gory details. You really should read Bill Hails’ book ! Simultaneous 'let' We just added ‘letrec’ to solve the issue of bindings referring back to...
• #### Ape - New Toy Language

I read “ Thinking Fourth ” and also played with Joy and Cat some time ago, but honestly I had written them off as “toy” languages. Recently I’ve had renewed interest in concatenative languages after watching Slava Pestov’s...
• #### Speech Grammars in F#

People say that Vim keys are a grammar for talking to your editor and that's exactly what they are. One weekend some time back I had fun making VimSpeak to see how well mapping English words to Vim keys would work. It turned out quite nice and some pieces...
• #### 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...
• #### 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...
• #### Babbage’s Difference Engine

";" galleryimg="no"> 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...
• #### F18 Variables

Variables on the F18 are not like regular Forth variables. Usually a variable is a word returning the address of its value used along with fetch ( @ ) and store ( ! ) words. On the F18 the idiomatic approach is to have individual variable-specific fetch...
• #### Ants

Gram's blog has been pretty fun to follow. Like with Project Euler , I constantly want to implement each thing he talks about (e.g. Monadic Coconuts , Towers of Hanoi ). Here now is " The Wondering Ant ": open System.Drawing open System.Windows...
• #### XSLT: A Pure Functional Language

Some years ago now, I had the pleasure of working with a great team building a very elegant publishing and rendering system for MSN. This was one the best times I’ve had at Microsoft. It was a revolutionary system for the time [1] based on transformation...
• #### Sweeping Mines... Functionally

Mr. GeekRaver and I were walking between buildings and, for some reason, talking about how silly it is that good ol’ Minesweeper was “glossed up” for Vista. He said he had written it for DOS in some tiny amount of C code ( http://www.bradygirl.com/Work...
• #### Turtle Soup

I've been reading Seymour Papert 's Mindstorms book about Logo ; very interesting! I'm just dying to add Turtle Graphics to my little toy language from last post (BTW, a friend suggested I call it "Ape" and I think I will!). Logo with a twist What...
• #### Cryptarithm

A recent post to the Puzzles and Logic Problems alias at work: The problem below is an example of a cryptarithm – a basic math problem made more difficult by obscuring each digit with a letter or other symbol. B A R...
• #### Hey, Hey We’re the Monkeys

My current team is awesome! We’re a tight little team with an interesting history and have done some great work together. It’s a sad day though. Today was John’s last day. He’s going over to work on Seadragon -ish stuff – really, really cool project!...
• #### Streams

These SICP lectures are great I tell ya! The two lectures on Streams (6a/6b) talk about implementing things with lazy lists. His examples are in Scheme but here’s my translation to C# using some of the new features in 3.0. For example, here is a lazy...
• #### 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 { 2.. int (sqrt (float n)) } |> Seq.forall ( fun x -> n % x <> 0 )) Seq.nth 10000 primes