6 ms·
Sometimes, ideas come before their time? How many times has parametric polymorphism been reinvented? Java tried to pretend it wasn't important, and then Go. Py
by lambdasquirrel 10y ago
Sometimes, ideas come before their time? How many times has parametric polymorphism been reinvented? Java tried to pretend it wasn't important, and then Go.
Python isn't really typed, which allows it to avoid those kinds of mistakes.
Having been a Haskell programmer, I would argue that the type system is beautiful and powerful, but still not powerful enough that it's a game changer. And it may never be powerful enough.
People forget that the reason we program is to make stuff for other people. Python gets used because it's accessible to the people most connected to the real world problems. The primary in my mind is that there is too much risk involved in transitioning from messy languages to cleaner ones.
Much of that isn't just in the language, but e.g. how easy it is to debug and deploy. So I look forward to things like stacktraces for ghc, and for stack to continue maturing. I look forward to more people being comfortable with the language.
That all having been said, it's just way too easy to run into the limitsof non-dependently-typed programming in Haskell. So here's another thought, what if string type inference is a dead end?
- cgag 10y agoHaving been a haskell programming I kind of think it's type system is too powerful. I feel like I run into more problems of being unable to figure out all the type-level hackery and abstraction in a Haskell library, than I do of "I wish I could have encoded this bug into my types". edit: disclaimer: hobbyist, never did haskell professionally
- tome 10y ago> I feel like I run into more problems of being unable to figure out all the type-level hackery and abstraction in a Haskell library When you feel like this please file issues on those libraries!
- dnautics 10y agoHave you seen Julia's type system? It is strong, and parametric on types, bitvalues, and tuples thereof. So for example Array{Int32, 2} is a 2-dimensional array of Int32. Types are tied into multiple dispatch; so the properties are defined by the functions created for it. Moreover, JITting is type-dependent; if you call a function with a type signature, it compiles it, unless it's seen that signature before.
- lambdasquirrel 10y agoWhat build tools would you use with it?
- dnautics 10y agoI don't think those sorts of things are a good use case for Julia. Julia is best used for deploying backend mathematics. I'm just suggesting the type system is beautiful, and if someone wanted to implement a more general purpose language with that type system it might be welcome.
- Jcol1 10y agoHow is julia or it's type system not suitable for general purpose programming? Multidispatch seems like a generalization of python...and fields don't have to be typed. general purpose programs in julia: https://github.com/shashi/Escher.jl https://github.com/shashi/Escher.jl https://github.com/essenciary/Genie.jl https://github.com/essenciary/Genie.jl
- Xcelerate 10y agoI love Julia's type system. I just wish the whole thing was static (I've never had a case where the Any type worked better than explicitly specifying a type).
- dnautics 10y agoIt works fine when you are lazy... I didn't feel like figuring out a type for a dictionary that was stashing parameters, so I just made it {symbol, any}.
- mahyarm 10y agoProgramming language features have their own costs too. Ease of shooting yourself in the foot, how much compile time it take when it scales up to a big project, ease of making tooling, likelihood of making programming mistakes and so on. Add too many features and then your language becomes bad to work with in a large scale because compile and memory speeds explode. Too little and it become bad in other ways.
- stcredzero 10y agoEase of shooting yourself in the foot The most underestimated cost!
- deleted 10y ago[deleted]