Fork me on GitHub

@martintrojer: Cool article! I’m not sure if you’re open to suggestions/modifications, but there will be situations when you are forced to do so if you adopt a typed workflow would be even better with an example. As a reader who hasn’t tried core.typed, my imagination can’t decide if these would be meaningful, in-the-end-you’ll-thank-me refactorings like Haskell would shove down my throat, or if they would just expose immaturity in core.typed that I’d have to work around as a user (or both?).


Thanks for writing this. simple_smile


steven: thanks, its a delicate balance between the length of the post and the number of details you can cram in there.


@martintrojer: Totally. simple_smile You could probably write a small book if you wanted to explore details. It actually feels really balanced with the external links.


Upvoted. You’re still page 4, fwiw


Interestingly is its combination of imperfect annotations in core.typed


… and some forms that is not possible to correctly annotate


the latter is more a active research area I believe where the Typed Racket ppl needs a brain wave to solve it for us simple_smile


So its not exactly a ‘you-should-use-a-state-monad-transformer-here-dumbo’ haskell kind of thing.


I’d definitely be interested in an entire article on the latter (in a clj context, at least… not enough hours in my life to start caring about typed racket).


The reason I mention Typed Racket is that is provides the theoretical underpinnings of core.typed.


Yeah, makes sense. It’s a curmudgeonly position to take, but because I would probably never build production software in TR, I’m unlikely to explore it much. c.t offers only limited appeal on its own, but articles like yours chip away at me, since there’s the “you could retrofit this to your legacy clj codebase” angle. simple_smile


martintrojer: actually I'm in a good position to improve the type inference drastically in Typed Clojure. an XML processing language called CDuce is a goldmine for complete local type inference which I've been studying since January.


it will probably come next after gradual typing, the rationale being type checking transducers


since it's almost always polymorphic functions applied to complicated args, you need to instantiate most transducers.


ambrosebs: cool


@tcrayford: Tom, been playing with matcha and I like it but I have one comment: the error messages format poorly when run from clojure.test e.g.

expected: "\"{\\\"message\\\":\\\"This is a new message!\\\"}\""
  actual: "nil\n\n    diff:\n       +: \"{\\\"message\\\":\\\"This is a new message!\\\"}\"\n\n       -: nil\n”


Am I just misusing it?


just switched to solarized colourscheme... Holy poop rainbows.