thosakwe
Joined 9 years ago
Joined 9 years ago
I had NO IDEA what Linux was at the time, but DSLinux helped me deepen my interest in computer science.
So, thanks to the creators, and everyone who contributed code.
That's something I'm looking into doing myself. It would be great to help improve tools like cabal and the haskell-language-server.
I think that will go a long way towards making Haskell more beginner-friendly, and easier to use in production.
Honestly, if I were writing a compiler, I would go with your approach as well.
This isn't a problem if you're the one writing the function, but if you're using a 3rd party library that doesn't know about your monad, then fmap can be very useful.
1. Being within the same monad. For example, you can `bind` a `Parser a` to a function only if it returns `Parser b`.
2. Performing an actual action and breaking it out of its monad.
For example, if you're using the Parsec library, and you have a `Parser Int`, you can't get to that int without using a function like `parse`, performs the actual action of parsing input text.
With a functor, you can compose a `Parser a` within an `a -> b` function, instead of having to return `Parser b` in your function.
So if you have a `Parser Int`, and you want to turn it into a parser that multiplies its parsed input by 2, you can write `fmap (*2) myParser`, instead of having to write `myParser >>= \a -> return (a * 2)`.
Parsers being functors means it's easier to compose them with other things, without having to actually perform the parse until you need to.
After reading this article, the conclusion I drew was, "Cool, so I can `fmap` over my parser now and transform what I parse using functions."
To answer your other questions: I'm not sure it means much for the code that does the actual parsing, nor how you specify the grammar's rules, it's more about being able to transform the output using functions.
If your static analyzer is a function, you could now write `fmap staticAnalyzer myParser`.
I love functional programming, but I doubt most companies that sell CRUD apps care about it.
I could be misunderstanding something.
Bootstrapping a micro-SaaS business.
Twitter: @tobebuilds Blog: https://tobebuilds.com