Quote of the Week
The other day I was walking through Midsummer Common, which is a big green field near the center of town that normally contains quite a few cows. Instead there was some kind of bicycle race event and the place was packed with people and cycles. I smelled the smell of good, greasy food -- like the kind you get at a county fair or a race track -- so I sauntered on in. As I was munching on a tasty roast pork sandwich (with stuffing and apple sauce) I overheard the following snippet of conversation:
Boy (in a whiny English kid voice): So, can I mum, can I?
Parent: No Roger, you've been an absolute muppet today!
That's the first time I have ever heard the word "muppet" used this way. I wasn't sure whether it was a fluke or not, but while house-hunting today, my would-be roomate used the term in the exact same way to describe someone who forgets to lock up the house when they're the last to leave.
Nerd Section
Some time ago I got distracted by a silly idea that just wouldn't leave me alone. It kept gnawing at me to follow it up, so eventually I gave in and started hacking on it. Have a look at the following code. I'll give you three guesses to tell me what language it's written in.
DEF (id(outer) FUNCTION(id(x)
FUNCTION(id(ignored) VAL(x))))
DEF (id(one_ret) APPLY(VAL(outer) _(1)))
DEF (id(two_ret) APPLY(VAL(outer) _(2)))
PRINT (APPLY (VAL(one_ret) _()))
PRINT (APPLY (VAL(two_ret) _()))
FUNCTION(id(ignored) VAL(x))))
DEF (id(one_ret) APPLY(VAL(outer) _(1)))
DEF (id(two_ret) APPLY(VAL(outer) _(2)))
PRINT (APPLY (VAL(one_ret) _()))
PRINT (APPLY (VAL(two_ret) _()))
DEF (id(count_backward) FUNCTION(id(x)
IF(NOT(VAL(x))
PRINT (_(done))
BLOCK(
PRINT (VAL(x))
APPLY(VAL(count_backward) MINUS(VAL(x) I(1))
)))))
PRINT (_(done))
BLOCK(
PRINT (VAL(x))
APPLY(VAL(count_backward) MINUS(VAL(x) I(1))
)))))
No, it's not LISP. The parenthesis go on the outside of the expression.
No, it's not python. Notice how there's no commas separating arguments.
Did I hear someone say haskell? Now you're just being silly.
It's actually C. Through abuse of variadic functions and preprocessor macros, I implemented a functional, dynamic language directly in C. For the curious, you can see the full example at my git repository, http://github.com/emdash/goof/blob/no_commas/simple.c:
I did it for fun, but it does work. Bonus points for explaining how it works in a comment.
2 comments:
Oy I'm so glad I'm not a coder. How's everything going in the UK, Brandon? Did you finally figure out where your office is? I'm going to be near your turf in two weekends.. perhaps we could meet up in London sometime..?
Yeah, that'd be great!
Post a Comment