\

Löb and Möb: Loops in Haskell (2013)

62 points - 11/07/2025

Source
  • Twisol

    today at 9:30 AM

    > This shows how moeb is a generalization of fix.

    To be fair, loeb was already a generalization of fix. If `f` is the identity functor, then `loeb` has type `(a -> a) -> a`, and the `fmap` used in its definition resolves to `id`.

    It's a shame there aren't any other example applications of moeb. The author mentions using `traverse` and `foldMap`, but those are also based fundamentally on `fmap` in some sense, and I wouldn't be too surprised if they also ended up being literally `fmap` for some specific choice of functor.

    • gnabgib

      11/08/2025

      (2013) Popular in:

      2021 (153 points, 60 comments) https://news.ycombinator.com/item?id=34578411

      2018 (86 points, 10 comments) https://news.ycombinator.com/item?id=18159087

      • quchen

        today at 10:18 AM

        I did not expect this to surface after all these years, but here we are! o:-)

        • sfvisser

          today at 7:26 AM

          Reminds me of this classic doing the same: http://blog.sigfpe.com/2006/11/from-l-theorem-to-spreadsheet...

            • sevensor

              today at 11:46 AM

              I’ve read the post carefully and I still don’t get how they proved Santa Claus without proving the proposition.

          • moomin

            today at 8:43 AM

            This stuff is really cool; I’ve literally written an article about it myself. However, unless you address the possibility of entering an infinite loop, it’s not really that useful.

          • phplovesong

            today at 7:41 AM

            Uuh i miss the strange loop conference. It was simply the best and most fun programming related conference ever.

            • jaapz

              today at 10:28 AM

              Whats up with all these haskell articles being posted all of a sudden (many of them by quchen)

              • anon291

                today at 7:19 AM

                very useful when writing toy assemblers in Haskell as loeb let's you easily resolve labels to addresses once you've output the other instructions. Also a good use of the tardis monad which does the same thing as loeb but with a bit more panache

                • today at 11:24 AM