4 ms·
tagged in on a client project written in haskell codebase organization was nonintuitive and I blame type-level programming compilation was so slow and bad tha
by awinter-py 6y ago
tagged in on a client project written in haskell
codebase organization was nonintuitive and I blame type-level programming
compilation was so slow and bad that other programs on my laptop started to die
the feature I was adding was something that would be library-provided in a normal web language
none of the operators have names and are very hard to google; I had to search for things like 'haskell tilde asterisk arrow'. Impossible to know what's from libs vs core language. Lots of explanatory docs online were like 'oh we don't pronounce this one'.
Core abstractions have no definition ('to explain that I would have to explain monads but you won't understand monads so GFY'). Monads are just sub rosa dependency injection .
lang doesn't protect you from runtime crashes but does apparently protect you from knowing where the program crashed
- fphilipe 6y agoHaven’t written any serious Haskell, but doesn’t Hoogle work for searching infix operators? One thing I really like about Haskell is Hoogle. The ability to search by function signature is great. I often wish I could do that in other languages.
- awinter-py 6y agosearched `->` got (->-) :: Bind m => (a -> m b) -> (b -> m c) -> a -> m c semigroupoids Data.Functor.Bind
- mrkeen 6y agoFair enough. `->` is core syntax, not a library function. It means `->` if you're a Java guy or `=>` if you're a Scala guy. Just search for it the same as you'd search for it in Java or Scala.
- awinter-py 6y agoI'm open to the argument that my imperative / scripting background in some way primes me to learn rails but makes it hard for me to navigate a haskell codebase, and that this is human difference rather than one language being inherently more navigable than the other
- mrkeen 6y ago> lang doesn't protect you from runtime crashes but does apparently protect you from knowing where the program crashed Can you share a sample? square x = crash * x crash = undefined main = print (square 3) Cause for me, this results in: foo: Prelude.undefined CallStack (from HasCallStack): error, called at libraries/base/GHC/Err.hs:78:14 in base:GHC.Err undefined, called at foo.hs:3:9 in main:Main Maybe your mileage varied.
- marcosdumay 6y agoThis is a relatively new feature. It used to say something like 'error: undefined' and exit.