How about static analysis? Plenty of interesting problems there. For example:
1. detect incorrect uses of transients (those that would certainly lead to exceptions) and report them during compile-time. 2. related to (1), but different: detect places where the compiler can implicitly convert collections to transients and back, without losing correctness, and use that as a speed-up. 3. soft typing, either to speed up code or to detect incorrect code early. Such things have been done with Scheme. I believe Clojure has certain advantages when working on static analysis: * you can call the reader and macro expander during analysis, which greatly simplifies the language to be analyzed. * the core language is relatively simple * the compiler source is freely available and is written in a relatively high-level language (java and not c), so it (should) be relatively easy to get into. Relatedly, it might be interesting to create formal semantics for Clojure, and interface it with a proof assistant, enabling proofs to be written and checked about the behavior of clojure programs. In that context, one of the opportunities provided by lispiness is that macros can help write the proof, by automatically creating propositions about the code that they return. For example, (dotimes [i n] body) can be modified to attach these propositions to its output, using an appropriate proof language: - i>=0 - i<(the result of) n - the loop terminates if its body terminates That's just scratching the surface. That field is deep and wide, and a complete implementation is probably beyond the scope of a master's theses. Still, parts of it can be done. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en