[HN Gopher] FizzBuzz in Haskell [pdf] ___________________________________________________________________ FizzBuzz in Haskell [pdf] Author : revskill Score : 25 points Date : 2022-11-21 21:04 UTC (1 hours ago) (HTM) web link (themonadreader.files.wordpress.com) (TXT) w3m dump (themonadreader.files.wordpress.com) | yakubin wrote: | See also the fastest FizzBuzz written in x86-64+AVX2 Assemby, | running at 45GiB/s: | | <https://codegolf.stackexchange.com/questions/215216/high-thr...> | | <https://github.com/orent/htfizzbuzz/blob/master/fizzbuzz.S> | metadat wrote: | Discussed one year ago: | | https://news.ycombinator.com/item?id=29031488 | | (1260 points, 256 comments) | | p.s. It's actually 55GB/s :) | adamjc wrote: | I know this is a "toy" paper, but is enough to reason as to why | few use Haskell in production (ignoring the tooling issue). It's | pretty gnarly even for a basic problem. | | > Functional programmers! Remember higher-order functions! | | I didn't realise utilising HoF meant rolling your own interpreter | ;). | | Pure FP is very interesting, but having to write entirely without | side-effects would be a real challenge for me. I use js+ramda[0], | we effectively write our services as a `pipe`, you just stick in | transforming fns whereever you need to, e.g.: | const handler = pipe( fn1, fn2, fn3 | )(event) | | The underlying implementation of `fn1` for example doesn't need | to be written in an fp paradigm, it can be written imperatively. | You could then slowly-slowly chop out the imperative functions | for fp ones if you really wanted, but IMHO some problems are best | solved imperatively. | | My advice is instead: "Programmers! Remember to use the right | tool for the job!" | | [0] https://ramdajs.com/docs/ | cmeacham98 wrote: | This paper takes a deliberately weird solution to the problem. | | FizzBuzz can be done more "normally" in Haskell with similar | levels of simplicity as non-FP languages: | https://wiki.haskell.org/Fizzbuzz | kasajian wrote: | plus you don't even need the first line. | antonvs wrote: | The paper even gives three normal examples early on, | including one similar to the one in your link. | | People who miss that are clearly looking hard for some reason | to dismiss the work. | spacemadness wrote: | This looks very clear and straightforward even knowing | nothing about Haskell syntax. | rebeccaskinner wrote: | You're looking at this the wrong way. The paper isn't showing | Haskell is gnarly for a basic problem, it's using a basic | problem to demonstrate a particular technique that you can use | in Haskell. There are plenty of simpler ways to implement this | kind of thing in Haskell, and even some that are both simpler | and show off some of the more unique features of Haskell. The | goal here wasn't "let's find the best way to write fizzbuzz in | Haskell", it was "let's show off how to build an interpreter to | solve problems, using a small problem everyone is familiar | with". | | Haskell isn't ill-suited for something like fizzbuzz at all, | it's just _also_ suited for things like quickly writing | interpreters and solving problems that way when it makes sense. | whateveracct wrote: | I find a lot of people don't get pedagogy. They want | immediate, authoritative statements on what is good or bad. | Haskell isn't really about that. It's about the 10s of | equivalent ways to solve every simple problem. That's what | makes it fun. And fun is Haskell's secret sauce. | nearmuse wrote: | Case in point: it can prompt people to gush about a | fizzbuzz implementation. | Waterluvian wrote: | https://stackoverflow.com/a/6957469 | | This seems very elegant and clean and I don't know the | slightest bit of Haskell other than "MONADS!!!" | dottedmag wrote: | Ugh. There are languages that encourage this kind of time | wasting. Avoid them. Also, | | > Exhibit A, in some cases, performs the 'mod' 3 and 'mod' 5 | tests more than once | | Isn't Haskell a language with controlled side-effects? Compiler | ought to see that the same operation is performed twice and | factor it out. There are no mutable variables in the scope. ___________________________________________________________________ (page generated 2022-11-21 23:00 UTC)