Now that we have implemented Black-Scholes in Clojure, let’s make a Swing GUI for it. The Swing GUI will have text boxes for all the necessary inputs, and calculate prices and Greeks when the button is pressed. It’s a simple and straightforward way to get started in Swing GUI programming in Clojure. Here’s what it [...]
The Black-Scholes option pricing model, implemented in Clojure based on the description at Wikipedia and these code samples. Print PDF
Clojure.contrib’s log/spy macro does not realize the contents of lazy sequences by default when logging, as they might be infinitely long. If you’re sure that your lazy sequence is finite, you can use this lazy-spy macro to force it to be realized when it’s logged, so that you can inspect the contents.
Clojure, Log4J, and clojure.contrib.logging can play nicely together. Here’s a reasonable default configuration.
I wanted to parse some externally-generated and malformed HTML, so naturally I went to the short and sweet clojure.xml/parse function. I got a nasty error: error: java.io.IOException: Server returned HTTP response code: 503 for URL: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd It seems that the W3C blocked access to the DTDs two years ago, but Java still tries to load [...]
Psyleron sells a hardware random number generator and software for experimentation on the interaction of consciousness and randomness. As the Psyleron system only runs on Windows, I wrote some quick Clojure to do experimentation with randomness.
SQL WHERE and HAVING clause strings can be rendered from neat, structured S-expressions with this simple Clojure macro.
How do you undef / unintern a symbol in Clojure? (ns-unmap 'namespace 'symbol).
The date and time classes built into Java are a horrible mess. What are Clojure programmers to do? Use Joda Time instead. Joda Time is coherently designed and easy to use.
Clojure.contrib.logging doesn’t have any way to set the log level. This is obviously a problem if you want to make use of various log levels (debug, warn, etc.) to separate different logging depths. Here’s a function to set the logging level.