There are some good criticisms here about some of the discontinuities in difficulty, but first and foremost I really want to congratulate OP for doing something to address the instant gratification problem in learning to program. You can open this site in your browser and immediately start interacting with code rather than trying to get your java environment/editor/etc. set up, and that's fantastic, we really need more tools like this.
I like this, but it seems too cryptic for a true novice to actually learn from, especially if they've never been exposed to Lisp syntax. Who is the intended audience?
I see that it's something of a port of the Clojure Koans, has there been much feedback on that as to whether people are able to truly learn the language this way? I'm intrigued by new methods of instruction, but this seems like it would be a very frustrating trial-and-error game to a beginner, as there is virtually zero actual teaching. We're supposed to be making programming more accessible, not less. It seems like this kind of thing ends up as a fun toy/experiment for people who already know most of it.
You're totally right it's not a good way to learn the language in isolation. A little context: this is the first project I've built in any Lisp, so learning Clojure/ClojureScript from scratch is still very fresh in my mind.
When I worked through the original Clojure Koans, I had a REPL open and made judicious use of online resources to figure out each answer. As an experienced programmer who was brand new to Lisp, treating the koans as a sort of 'open-book exam' was very effective for me. Perhaps explicitly suggesting that workflow on the home page would be a simple but worthwhile addition.
For what it's worth, my non-programmer coworkers were able to deduce many of the answers just from context. The gradual difficulty ramp is quite good, only bumpy in a few places (higher order functions is a bit of a sudden jump for those who aren't well-versed in functional thinking). I'm a relatively seasoned programmer, who is gradually becoming familiar with Clojure/script, and really enjoyed these exercises. Definitely not a teaching tool, but a fantastic assessment of what parts of the language come easily, what parts I need to review, and excellent practice reading the language.
It would be very nice if each koan had docs included underneath (maybe hidden by a hint link?) talking about what the koan was trying to teach you. If you can do every single one it isn't that much fun, but if you can't do every single one then you need to go off and learn something and it would be really good to help nudge the user along to where they can learn more. Alternatively to a help box having the displayed code provide links to the appropriate clojure docs would be another route.
>I like this, but it seems too cryptic for a true novice to actually learn from, especially if they've never been exposed to Lisp syntax. Who is the intended audience?
Well, I am definitely learning from this. I always wanted to explore Clojure/ClojureScript and I read first chapter of SICP so I understand Lispy syntax, but I never followed through.
I love how this website doesn't try to appeal to novices, because I'm always frustrated reading beginner guide to languages, because they're easy too slow- or too fast-paced. This one strikes a nice balance, without being too pedagogical. It lets me make guesses. I like this approach a lot.
This goes from easy/novice up to advanced level in a short amount of time. I did some koans until I arrived at functions/9 which is:
(= 25 ( ___ (fn [n] (* n n))))
I found this one to be not so trivial, granted I'm still a novice clojure user, but I still think that it went up rather steeply here.
I think if they really want to introduce new people to ClojureScript, then the koans need a friendly help system and the ability to show the solution and have it explained to you.
It should also have a short introduction in Lisp that explains prefix notation / s-expressions. I think that would make things a lot easier.
It doesn’t end there. On that page, you have to edit the code in the gray boxes at the bottom, not the big code at the top. (I recommend copying your answer to that page before you submit it; you can then adapt that answer for the problems on the next two pages.)
I came this close to delaying the site launch so I could build in a table of contents, but figured it wasn't 100% essential to shipping. Given the great response I've gotten to the koans, I'll probably add one in very soon.
I'm working thru it in order. I didn't feel the need to jump around, but it would be nice to know how much longer I have to go, i.e. how many more screens.
This reminds me of http://4clojure.com with a simpler [nicer?] (but less featureful) UI.
I want to add a slightly off-topic remark, but 4clojure actually runs the tests in a sandbox on the server. This is compiling to ClojureScript, and I have to wonder if it's "good enough" or whether down the line some koans might run into problems being ClojureScript instead of the real Clojure on the JVM.
#5 in sequence comprehensions part doesn't seem to work for me. I've checked my solution in console clojure interpreter and it evaluates to true there.
I was playing with this, but is a little long and I wanted to know if the end is near, so add a percentage bar also it would be useful to have an index of topics.
Having done a few Clojure projects lately, I got most of these right immediately, but there were a few I messed up. It would be cool if you could go through these flashcard-style: one try for each koan in a category, then re-show the ones you got wrong, and repeat until you get them all right.
Really interesting way to learn. I made it into vectors and then got completely stuck on subslice. Maybe a hint text or something or a way to skip it or get the answer if I have not got it after a few tries.
I might be typical but once I hit that screen and could not go further I closed it.
I chuckled when I realized you could just copy and paste the expression and it will pass the equality test. Obviously you don't learn anything this way, but I'll admit I used it once or twice when I got stumped.
Interesting... I would second adding some hints after n failed attempts. You could just expect the user to go off to google but it'd be a nice touch to get a small hint in-place.