5 ms·
You don’t need to understand the internals of a thing, until you do. Everything works fine as described in documentation until it doesn't for your use case. You
by tutfbhuf 7y ago
You don’t need to understand the internals of a thing, until you do. Everything works fine as described in documentation until it doesn't for your use case. You might be lucky and find help from stackoverflow, otherwise you need someone who really grok it.
- pwm 7y agoSure and at that point you need to learn those internals. That's just the way it is with everything, no?
- vbezhenar 7y agoWhen things go wrong, you might not have time to do so. When my project started to leak memory at enormous rate, I was able to find the issue quickly enough. But if I didn't know how all those things work, I would spend weeks or months learning all those things. Restarting application every 10 minutes for a week is not a good idea.
- pwm 7y agoHow is this different for Haskell than with anything else? If you want to be an expert in something, anything you do need to put in the work and learn it inside-out. There is no royal road. I fail to see how this is specific to Haskell...
- ukj 7y agoIt boils down to the steepness of the learning curves. If I am in the business of system reliability, I will choose the language with shallower rabbit holes. Abstraction layers are great for builders and terrible for fixers. I am both, so I need to strike a balance.
- vbezhenar 7y agoI agree with you, I don't think that it's different for Haskell.
- whateveracct 7y agoHaskell's internals are actually pretty easy to inspect! - Haddock hyperlinked source makes it easy to understand libraries if you need to dig into internals - ghci makes it easy to interactively learn the language - and a new codebase! - Haskell can dump the stages of its codegen pipeline (Core, STG, Cmm) - Profiling and Event logging exist and are easy to use - You can even write an inspection test to assert certain behavior holds. For instance, that no allocations occur or that some abstraction (e.g. Generic) is truly erased by GHC's optimizations