For fun, and to learn Picat, I programmed a Nurikabe solver.
To be completely honest, I found the development experience to be a struggle, in the sense that the editor wasn't great, the interactive terminal not terribly useful, the error messages rarely helpful, and not a lot of tools for working out what was going wrong. I spent a lot of time commenting out various sections of code to try to isolate errors, since I couldn't find a better methodology for debugging. However, I am deeply impressed with the elegance and concision of the final code, and the speed of execution.
It solved in under 1 second a puzzle that took about 5 minutes using a comparable model on the SAT solver I usually use (SAT4J using an interface I wrote from Clojure), and to do it in SAT4J I had to implement my own binary numeric representations and addition in order to write a connected component constraint, which you get "for free" in Picat.
Thanks to Hakan for getting me unstuck with my rookie bugs.
This was just for fun, so I don't really need to improve this program further, but I'm always interested in learning how to use a language idiomatically, so comments are certainly welcome.