5 ms·
That's been the story of Haskell for over 10 years. The world and other language ecosystems are changing faster than Haskell is growing. Clojure and Scala give
by fjsolwmv 9y ago
That's been the story of Haskell for over 10 years. The world and other language ecosystems are changing faster than Haskell is growing.
Clojure and Scala give you an alternative to Python that have the power of the Java ecosystem to take your programming out of academic and toy projects.
And Python finally has static typing, 10 years after it was announced.
- Jeff_Brown 9y agoWhat changes do you think Haskell can't keep up with? If you want to approximate the cool things in Haskell with a Python-compatible* language, there's Coconut. In addition to static typing, it offers algebraic data types (how I lived without sum types, I don't know) and pattern matching. * every valid Python program is valid Coconut
- brightsize 9y ago"Coconut: Simple, elegant, Pythonic functional programming." http://coconut-lang.org/ http://coconut-lang.org/
- rthomas6 9y agoWow, this looks very cool! Why is this not more popular? Coconut seems like something many people, including me, would want to use for every Python project of sufficient complexity. What's the catch?
- platz 9y agoYou write in a dialect that python programmers do not understand. it is a deviation from the norm. expectations on others that have to read/understand/use your code.
- brightsize 9y agoFanboy here. I've used Coconut extensively and it's a joy. I wouldn't start a (personal) Python-targeted project without it. Pattern-matching, a non-horrid lambda syntax, lazy evaluation, TCO, a built-in partial function syntax, and finally the pipeline operator (|>) are all things I'd hate to be without now. A more detailed list of features (incl. MyPy integration) is here: http://coconut.readthedocs.io/en/latest/ http://coconut.readthedocs.io/en/latest/ . The docs are just great too. The catches: 1. You have to be OK with a compilation step that isn't part of the Python world. 2. To the best of my knowledge the language has been and still is being developed by a single person, so there's the "Evan gets hit by a bus" risk built in. 3. Tooling is virtually nonexistent. There's a Vim plugin that understands the language syntax but there's zero IDE support. Of course you can debug the generated Python with Pycharm/VS Code/etc and having done it I can say it's not terribly painful but isn't terribly fun either. I think that over time the lack of tooling will be the biggest hindrance to the language's further adoption. OTOH I'd be curious to know if this has been a major factor in other unpopular languages remaining unpopular. I seem to remember a lot of complaints about tooling in the early days of Scala but the language still managed to become fairly successful once that situation improved. Edit: formatting, final thoughts
- rthomas6 9y agoI thought about it, and I think the unpopularity of Coconut might be due to the existence of the Toolz library. That gives most things that Coconut does minus better lamda and TCO.
- sidlls 9y agoPython has static typing? Since when? In what form?
- yawaramin 9y agoPython 3 supports type annotations natively, and the mypy tool is an external typechecker that you can run just like any other static analysis tool during your build.
- sidlls 9y agoThat isn't static typing.
- CydeWeys 9y agoWhatever you want to call it, it's a lot more static than it used to be.
- yawaramin 9y ago- You can specify types - Types are checked before run time - Type errors are reported If that's not static typing, what is?
- sidlls 9y agoThis argument isn't convincing. These artifacts are hints that can be ignored, not constraints to the python interpreter. It seems to me a bit like arguing that the existence of Coverity (and other static analysis tools) means C is as safe as Rust.
- yawaramin 9y agoThe types were never meant for the Python interpreter, they were meant as documentation and as input for static analysis tools. Mypy just happens to be a static typechecker that takes advantage of the type annotations. Just because mypy is optional doesn't mean it's not static typing.
- nilkn 9y agoYou're sort of painting a picture here of Haskell and all other languages skating towards some unknown target point, with Haskell skating the slowest. But, at the risk of sounding like a fanboy, it could be that Haskell simply started out significantly closer to that target point, so that other languages are effectively skating towards it. In this way, both your statement and the parent's statement can be simultaneously true.