Yup, checks out.
Sad but true. As an engineer who works primarily in Ruby I’d really like to see Ruby become statically typed. Unit tests would become much less of a nightmare.
I have embarked on a: just use haskell for ALL THE THINGS  for the past 6 months. Honestly, I’m starting to really really freak out having to use python and ruby or perl or whatever for work. Its kind of weird thinking and going, why is there so much unneeded drama to using classes and ugh. I keep wanting hoogle so I can just find the function that implements the function shape I want. Which is generally always there or if it isn’t it isn’t too hard to build.
I think my time of taking dynamic languages as the best thing ever is definitely reaching a middle.
I feel like I’m in the same phase. I read so much about Haskell over that past year or so and recently, I started doing the same thing. Like John Carmack mentioned in his QuakeCon talk: (paraphrasing) “I’ve set out to write my 10,000 lines of Haskell to really learn about it in a practical way.”
My problem is that I can’t just slip in Haskell code at work… I think I’d certainly ruffle some feathers. :)
In other words: has Betteridges law of headlined been disproved? No.
I find debates like this a little funny. I encourage people to be receptive to the value of static types, but the large efforts behind typescript, hack, and flow suggest that it’s no trivial matter at all to add a type theory to a dynlang.
They are however great examples that type systems can be slotted atop a dynlang as a new UX. I think that is huge. Just don’t expect 99% of the benefits of having a nice and pervasive type theory like Haskell’s to be translated just because you’re aware that an int isn’t a string.
I’m a little worried that the way this will play out is that the next wave of dynlangs will be armed with the idea that gradual typing is a lot of paperwork without significant benefit and the pendulum will swing back again. I believe that many advantages of types are simply not of the have-your-cake-and-eat-it-too variety.
But all that said, let me reiterate that I’m incredibly happy to see more noise about formal verification as both a type zealot and a person who’s live is day-by-day consistently and increasingly at the risk of other people’s programmed artifacts.
Gradual typing is actually pretty cool. See Typed Racket.
Is it just me or is the world going type crazy? Flow was introduced this past week, now Ruby is talking about static typing…. Its got to be all the popularity Haskell has been seeing lately – everybody wants types now….
I think types were pretty demonized for a long time since everyone was tired of
var FrobbleUnitFactoryManagerFactory frobbleUnitFactorManagerFactory = new FrobbleUnitFactoryManagerFactory();
Generally, Java’s type system is “whip and bondage” with relatively little payoff. I believe it’s becoming justified to say that inheritance and subtyping don’t actually play together very well and Java’s lack of inference, higher-order abstraction, and general verbosity did a poor sale on the potential for types.
On the other side of the fence, ML-alikes began very early to understand the importance of inference. They also built a type system not on trying to describe the broken abstraction of OO/inheritance but instead from formal logics and proof theory. Arguably, this is a study which has been honed by some of the smartest human minds for over a century at this point. It’s simply a much nicer system with more research and serving much higher goals. It’s just better!
So, as more ML-alikes get exposure it’ll be increasingly clear that types don’t have to suck. It’ll even be increasingly clear that good types change programming into an entirely different and more enjoyable experience.
Unfortunately, “good types” aren’t easy to do. Slapping some kind of type theory atop a dynlang is going to be its own bag of worms. Given how many dynlangs are out there and how easy it is to just throw a preprocessor on top there’s a good chance that in another 30 years we’ll become quite good at it. I’m really excited by that.
But I’m a little worried about things today (as I stated in my other comment here) because I think that the types of TypeScript/AtScript/Flow/Hack are serving two masters with their stated goal of “not being too painful into integrate”. It’s almost certainly the right tradeoff, but I fear that there will be another round of pendulum swinging before “real, mainstream” languages have halfway decent type theories driving development instead of just being fancy, annoying window dressing.
Very self-consciously, I say this as a Haskell fanatic who has only ever really had a chance to use TypeScript in anger.
Mind sharing what your experience with TypeScript was like? I’ve been investigating it for use at my company because we’ve been expanding into much richer client-side apps recently, and having an additional mechanism for catching errors early seems like it would be really useful.
Of late I’ve been trying to poke into things like GHCjs and js_of_ocaml instead, though, to be honest.