Brool
brool.com · Personal blog · on HN since 2008
Brool is a personal programming blog covering Clojure, Python, Lisp implementations, org-mode and GTD, and other language experiments.
What HN saysHN commenters link it for pattern matching in Clojure, the tiniest Lisp in Python, and the Python versus OCaml essay, often as self-links.
16HN people shared it
7linked it in comments
9stories submitted
76story points
9 years agolast shared
2008people per year2026
Most-shared posts
- 1Pattern Matching in Clojure4 people · 7 points · first shared 2009 · discussion on HN
- 2Automatic Proxy Creation in Clojure2 people · 33 points · first shared 2009 · 1 comments on HN
- 3The Tiniest Lisp (in Python)2 people · 3 points · first shared 2012 · discussion on HN
- 4Tokyo Cabinet API for Clojure1 people · 25 points · first shared 2009 · discussion on HN
- 5The Tiniest Lisp (in Python)1 people · 3 points · first shared 2008 · discussion on HN
- 6The Genius of Python, the Agony of Ocaml (2006)1 people · 2 points · first shared 2017 · discussion on HN
- 7Posting to Wordpress from Git1 people · 2 points · first shared 2010 · discussion on HN
- 8A Modest Proposal (PHP like templates for Clojure)1 people · 1 points · first shared 2010 · discussion on HN
- 9The genius of python the agony of ocaml1 people · first shared 2011
- 10Using org mode with gtd1 people · first shared 2015
- 11Using google authenticator for your website1 people · first shared 2011
What HN people wrote when they linked it
indymike · 2015-06-07
My experience with it was really different. I didn't read GTD first. I read this: http://www.brool.com/index.php/using-org-mode-with-gtd. Then I read this: http://members.optusnet.com.au/~charles57/GTD/orgmode.html. I thought, hey, this idea of having a trusted system and getting things I needed to do out of my brain and into the system might really help. I also loved the idea of putting my todos in contexts like "home" "office" "lunch" "driving". Those two simple things really made a huge difference for me...
lloeki · 2012-01-25
A similar endeavor in Python: http://www.brool.com/index.php/the-tiniest-lisp-in-python
I find it quite entertaining to see how specific language features allow for differing patterns. It is much more apparent with such Lisp implementations than with your typical Hello, World app or hidden by some library or framework.
pangram · 2011-06-28
Python code to validate via Google authenticator (sorry, self link): http://www.brool.com/index.php/using-google-authenticator-for-your-web…
sanxiyn · 2011-03-25
Here is another one: http://www.brool.com/index.php/the-genius-of-python-the-agony-of-ocaml
Zak · 2010-04-26
A little bit of googling gave me the sense that pattern matching in Mathematica is different from the pattern matching present in several functional languages. Please let me know how these Clojure features differ from that:
Clojure has pattern matching for the arguments in a function definition similar to ML or Haskell. It's often used as a more verbose alternative to optional args, but it's more powerful fundamentally.
Clojure has destructuring in binding forms like let, described here: http://clojure.org/special_forms
Clojure has multimethods which let you pick the method to use based on an arbitrary dispatch function.
There's a pattern matching macro that seems to be the beginning of a DSL for predicates: http://www.brool.com/index.php/pattern-matching-in-clojure
mquander · 2010-08-31
Re: the underlining -- no idea, just an instructional aid, I guess.
Here's another example that might look "DSLy": http://www.brool.com/index.php/pattern-matching-in-clojure
The pattern matching macro "match" is written entirely in Clojure, without any compiler tricks. I wish I could do the same in C#! (I'd need to have a bunch of cruft defining a predicate object with options for each match criterion.)
All of these techniques boil down to how easy it is to do two things in a language:
- To write DSL code in your structure of choice without having to cover it in a huge amount of syntax goop, e.g. the loop macro or the magic LINQ syntax.
- To analyze and transform that DSL code programmatically, in a way that's more structured than simple string manipulation, so that you can do the right thing with it.
C# 2.0 was very bad at both of these. C# 3.0 improved a lot, by adding lambda expressions for the first, and allowing you to analyze C# expressions as a syntax tree. But Clojure (& Lisp in general) is really good at both.
mahmud · 2009-08-24
This was posted here yesterday:
http://www.brool.com/index.php/snippet-automatic-proxy-creation-in-clo…
A neat hack to get something working quickly, but very unlispy. I can't even make sense of the AUTO-PROXY macro. A syntax barf mixed with a gratuitous breaking of LET. Also note that Rich Hickey decided to use the proxy design pattern to interop with Java, instead of doing all business with Java through FFIs; in a sense, Clojure's type system is embedded in Java.
http://clojure.org/java_interop#toc25
This is a minor aesthetic nitpick from a concerned Lisper, mostly for selfish reasons. My thinking goes: "Today I have Common Lisp for my projects and I am happy with it. But tomorrow if I need Clojure, I hope to find it in a sane, Lispy world. I don't want to learn Java so please don't make me" ;-)
For a far more alarmist polemic, albeit a satirical one, see this:
http://jng.imagine27.com/articles/2009-08-19-011225_clojure_the_false_…