This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-05-28
Channels
- # admin-announcements (1)
- # beginners (33)
- # boot (35)
- # braveandtrue (1)
- # cider (6)
- # cljs-dev (59)
- # cljsrn (24)
- # clojure (44)
- # clojure-austin (3)
- # clojure-china (1)
- # clojure-russia (13)
- # clojure-spec (63)
- # clojurescript (71)
- # community-development (1)
- # core-async (2)
- # cursive (6)
- # datomic (1)
- # editors-rus (2)
- # emacs (3)
- # hoplon (47)
- # jobs-discuss (3)
- # keechma (1)
- # lein-figwheel (2)
- # om (38)
- # om-next (4)
- # onyx (2)
- # other-languages (63)
- # parinfer (3)
- # planck (4)
- # re-frame (3)
- # reagent (2)
- # slack-help (4)
- # specter (26)
- # tmp-json-parsing (7)
- # uncomplicate (66)
- # yada (7)
@martintrojer: Your articles are great BTW
@sveri: Sure, I’ve been converting most of the Java code in Cursive to Kotlin as I work on it (no point migrating working code that I don’t touch).
There are lots of things in Cursive that I don’t want to do in Clojure due to startup time - basically anything that’s eagerly loaded at startup.
I only want users to pay the startup time cost when they actually start doing something with Clojure - presumably at that point they’re used to it 🙂
@martintrojer: If you’re evaluating backend language options for your series and you need the JVM, Kotlin is the only sane choice IMO.
@seancorfield: @bvulpes: Re: the completion order thing, what Cursive does for interop is it lets you type (object .me|)
, and it will use the type of object
to complete .method
. Then when you select the completion it will swap to: (.method object |)
, where |
is the caret.
If you had type information of some sort about the target of a (:keyword data)
call you could do the same.
@bvulpes: Sorry, I thought you were discussing the problems with prefix completion order with seancorfield. Just got invited here and am catching up.
mwell a long time ago there was a thread about compile time checking and maps came up
Sure, no snottiness was interpreted - my memory is progressively more subject to cache invalidation too
@cfleming: Interesting approach to method call assistance.
Cursive will also try to help out if you don’t do that, again using all inferred types in the scope when you complete
And sometimes you don’t need to do that, if you’re doing (-> object .method)
or similar
I just can’t face IDEs any more tho’… I wanted one consistent editor across all my machines a few years ago and my little netbook just didn’t have enough power to run Eclipse or IntelliJ so I switched (back) to Emacs and there I’ve stayed ever since.
IDO mode in Emacs seems to go a long way to helping… and CIDER seems to do some impressive assistance too...
I haven’t looked at Kotlin much. Seems nice but not different enough from Java or Scala to warrant the effort learning it.
What would be your "elevator pitch" for Kotlin in that context?
And what I’m finding recently “Perhaps 70% of the benefit of Clojure, but with types"
It’s not really null-safe tho’… you can just use !!.
and it’ll still happily dereference null for you.
I mean, Haskell has unsafeIO too, but that doesn’t mean we should write off its focus on purity.
If the language helps you 99% of the time and gives you an escape hatch too, that’s better than just throwing your hands up.
How many NPEs get reported against Clojure projects I wonder?
I’d expect lots of NPEs against Java code...
Because idiomatic Clojure relies on nil-punning and so you’re less likely to get NPEs there.
(sorry for the slow response, was distracted by a bug report)
Ironically a NPE. In Java code.
The problem with nil-punning is that in my experience it just passes logic errors further into your code.