4 ms·
> it's basically a few really awesome modern features in a massive graveyard of failed academic initiatives that are now enshrined in the lore of the language b
by codygman 11y ago
> it's basically a few really awesome modern features in a massive graveyard of failed academic initiatives that are now enshrined in the lore of the language because one or two useful libraries used them.
Err... can you qualify this? Based on my knowledge of Haskell this isn't a fair assessment at all.
- KirinDave 11y agoBased on my knowledge, it's very fair. How many language extensions are available vs placed in common use? Where is the guidance on which to use? You WILL use at least 3 I can think of off hand very commonly. And how many failed lens libraries preceeded the current (quite good) dominant library that still show up on google and even get included in? How many people still run versions of Yesod using now-unfavored abstractions? The Haskell community really got its shit together over the last 3 years. Cabal got a lot better, a bunch of key libraries got good, our compiler is fixed some major bugs. But these developments do not magically erase people who have navigated the prior 5 years of Haskell where a lot of these technologies got established. I love Haskell, I really do. I wish I could ship more code with Haskell, and like it as well. But the OP asked about why Haskell didn't take off. Its ecosystem was in what we might call a state of growth and flux at the time a lot of stream and batch computation systems were shipping. Oh and uh, I think Haskell's community is full of some truly toxic people, an intersection of some of the ugliest and most arrogant personalities of the Scala world who's primary education strategy can only be called "negging." You will know these people when you find them. Compared to the Clojure community or the F# community or the Erlang community which are also forward thinking, interesting and skilled... it looks positively hostile. You may not care about that, but I refuse to endorse or use technologies who's community leadership is so toxic. Why, I've stopped using Linux in anything but legacy apps because I completely despair of that project from ever rising above is puerile and cliquish roots.
- codygman 11y ago> Alright, I'll give you that there are a ton of GHC extensions after getting a list of them, all 106 as of GHC 7.10[0]. This does make me wonder why having so many extensions was never an issue for me. > The Haskell community really got its shit together over the last 3 years. Cabal got a lot better, a bunch of key libraries got good, our compiler is fixed some major bugs Agreed. > I love Haskell, I really do. I wish I could ship more code with Haskell, and like it as well. But the OP asked about why Haskell didn't take off. Its ecosystem was in what we might call a state of growth and flux at the time a lot of stream and batch computation systems were shipping. Fair enough. > Oh and uh, I think Haskell's community is full of some truly toxic people, an intersection of some of the ugliest and most arrogant personalities of the Scala world who's primary education strategy can only be called "negging." I've seen this personality type in other languages, but not Haskell yet. I too abhor the "negging" type, as well as the subculture that term arose from. 0: all ghc extensions OverlappingInstances UndecidableInstances IncoherentInstances DoRec RecursiveDo ParallelListComp MultiParamTypeClasses MonomorphismRestriction FunctionalDependencies Rank2Types RankNTypes PolymorphicComponents ExistentialQuantification ScopedTypeVariables PatternSignatures ImplicitParams FlexibleContexts FlexibleInstances EmptyDataDecls CPP KindSignatures BangPatterns TypeSynonymInstances TemplateHaskell ForeignFunctionInterface Arrows Generics ImplicitPrelude NamedFieldPuns PatternGuards GeneralizedNewtypeDeriving ExtensibleRecords RestrictedTypeSynonyms HereDocuments MagicHash TypeFamilies StandaloneDeriving UnicodeSyntax UnliftedFFITypes InterruptibleFFI CApiFFI LiberalTypeSynonyms TypeOperators RecordWildCards RecordPuns (Deprecated, use NamedFieldPuns instead) DisambiguateRecordFields TraditionalRecordSyntax OverloadedStrings GADTs GADTSyntax MonoPatBinds RelaxedPolyRec ExtendedDefaultRules UnboxedTuples DeriveDataTypeable DeriveGeneric DefaultSignatures InstanceSigs ConstrainedClassMethods PackageImports ImpredicativeTypes (deprecated) NewQualifiedOperators (deprecated) PostfixOperators QuasiQuotes TransformListComp MonadComprehensions ViewPatterns XmlSyntax RegularPatterns TupleSections GHCForeignImportPrim NPlusKPatterns DoAndIfThenElse MultiWayIf LambdaCase RebindableSyntax ExplicitForAll DatatypeContexts MonoLocalBinds DeriveFunctor DeriveTraversable DeriveFoldable NondecreasingIndentation SafeImports Safe Trustworthy Unsafe ConstraintKinds PolyKinds DataKinds ParallelArrays RoleAnnotations OverloadedLists EmptyCase AutoDeriveTypeable NegativeLiterals BinaryLiterals NumDecimals NullaryTypeClasses ExplicitNamespaces AllowAmbiguousTypes JavaScriptFFI PatternSynonyms PartialTypeSignatures NamedWildCards DeriveAnyClass