Over the last 10 days, I've been reading "Programming in Scala" and writing some Scala code.
As you can see in my GitHub Scala playground, I am starting to really like this language - it is as fast as OCaml (thanks to JVM's HotSpot technology), protects me from my typos (and bugs!) with its strong and static type system, and best of all: enterprise-wise, it doesn't live in a remote "island" (like Haskell and OCaml) ... because it has the huge ecosystem of the JVM.
My only problem so far:
Even though I've figured out how to develop my Scala code under VIM with sbt-quickfix, or under Emacs with Ensime (and thus have autocompletion and error navigation), I have so far failed to find a way to debug my code, with the same ease that I do for Python:
bash$ python -m pdb ./someCode.py
All the entries Google points to, are basically saying: "use this IDE that I really like..."
There are reasons however - no point in enumerating them, you either know them or you don't - that people like me prefer (a) programmable editors and (b) a standalone debugger, available outside their editor.
If you are one of the few like-minded people that dislike IDEs and happen to use Scala, I'd be really interested to know how you debug - in fact I'd be interested to hear your entire workflow.
Mine, so far is:
sbt-quickfix
to my SBT's project/ folder (just look at my code in this GitHub repos)sbt
in a terminal, and run ~compile
so that it automatically builds when I change something in my sourcessbt
terminal, type run
Ensime is even better, allowing auto-completion as well:
sbt gen-ensime
M-x ensime
ensime-typecheck-all
(mapped to F7 in my dotfiles) and when all is OK...ensime-sbt-do-run
Here's to hoping I am not alone - and that someone out there will help me with standalone debugging, too... the last challenge before I fully embrace Scala :-)
Turns out ensime
has a debugging mode, which I somehow missed. Paired with Emacs/evil, I've spent the last couple of days inside Emacs and Scala - and it all works perfectly... autocompletion, spawning sbt in a buffer when I want to run, and debugging.
My only remaining problem is about working with Ensime from inside screen
-ed sessions, which is my usual modus operandi (over SSH connections). The markers of Ensime debugger's current line and breakpoint set are placed on the left fringe - which works fine in graphics mode Emacs, but isn't visible in text-mode Emacs. I've opened a ticket and the guys there apparently have a plan for a solution.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With