Work in progress: 181,232 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #3541

E

Eugene Yokota

Personal blog · eed3si9n.comprogramming

Eugene Yokota writes eed3si9n, a personal blog at eed3si9n.com about programming. Since 2012, 22 different Hacker News readers have linked it 35 times, most often “Scalaz cheat sheet”. It is still writing: the last post was on 2026-10-28, and you can follow it by feed.

Visit the blog
35mentions?
22HN people?
2012–2026first – last linked?
Links on Hacker News per year · peak 7 in 2015

Too few sampled comments (20) to say how often HN recommends it.?

Why HN links it

HN readers link Eugene Yokota's blog for Scala and functional programming guides, especially Learning Scalaz and Herding Cats. Commenters call these a well-written tutorial series and the best guide to Cats.

Summarised by Claude from a sample of 20 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.

works by eugene yokota

Most-linked posts?

  1. /herding-cats/
    3 people · 4 mentions · first linked 2015-11-15
  2. Scalaz cheat sheet
    2 people · 2 mentions · first linked 2014-04-21
  3. Learning Scalaz
    2 people · 2 mentions · first linked 2015-02-12

What Hacker News says?

  1. Milner08 · 2021-05-14Recommends
    The thing with Scala is it depends on the pattern you want to use. I am a big advocate of it, and the function pattern being used fully with something like Cats or ZIO. However I would not suggest starting there. I would start by playing about with the syntax and writing standard OOP code, as its probably what you're most familiar with. When you want to dive into the power of FP then I recommend http://eed3si9n.com/…

    Comment linking /herding-cats/

    on “Scala 3.0”
  2. Submitted 2 Years at Twitter as a story · 107 points

    HN discussion
  3. If I understood John's motivation from the video, it's that this enables the Flatten structure to be inspectable, because the innards are not hidden behind an opaque closure (A => F[B]), as is the case in regular Monad. Btw, this is a problem that the "Selective applicative functor" too aims to alleviate. You can read more about the inspectability problem (and Selective) at http://eed3si9n.com/selective-functor-in-s…

    Comment linking /selective-functor-in-sbt

    on “Programming with Categories”
  4. Submitted Learning Scalaz as a story · 49 points

    HN discussion
  5. Milner08 · 2020-12-11Recommends
    Im a Scala fan, so all these will be focused around Scala, but they will teach you about Monad and Category Theory. I would start with http://learnyouahaskell.com - Its Haskell based but it covers them pretty well. Otherwise I use https://typelevel.org/cats/ for Scala daily and they have an _ok_ guide. But the best guide I've found for it was http://eed3si9n.com/herding-cats/

    Comment linking /herding-cats/

    on “Monads and GATs in Nightly Rust”
  6. Submitted Six years at Lightbend as a story · 8 points

    HN discussion
  7. I think it would be great if we could replace implicits by: 1) a simple mechanism for "enrichment" (aka. retro-active extension, virtual classes) 2) functional type-level computation (as opposed to the mini-prolog engine that is implicit search + type inference). Reducing complexity is complicated, unfortunately. We [have been|are] thinking about both of these alternative features, though. --- ps: The following part…

    Comment linking /implicit-parameter-precedence-again

    on “True Scala complexity ”
  8. Submitted Herding Cats with Scala as a story · 2 points

    HN discussion
  9. krenoten · 2015-02-12Recommends
    There is an awesome book called "Functional Programming in Scala" that has a lot of great questions to work along to, and is great for somebody interested in both Haskell and Scala but doesn't assume prior experience with things like combinators and monads. If you are pretty far down the Haskell route and want to learn about one of the more advanced type-level libraries, You may want to jump into http://eed3si9n.com…

    Comment linking /learning-scalaz/

    on “Go kit: Go in the modern enterprise”
  10. Submitted Scopt 4: command line options parsing in scala as a story · 2 points

    HN discussion
  11. > What if you want to write a library that works with either blocking calls or asynchronous promises? You don't need higher-kinded types for that. Just always return a promise, except the blocking version always return a promise that is already fulfilled. While strictly speaking this approach will work, a benefit of employing higher-kinded types (HTK's) to express a solution is being able to optimize without having…

    Comment linking /learning-scalaz/Id.html

    on “Higher-kinded types: the difference between giving up and moving forward”
  12. Submitted Tetrix in Scala as a story · 2 points

    HN discussion
  13. > ... what about flatmapping and optional/maybe value? The same concepts apply. With an option type, flatMap can be defined in Scala Option[1] types as: flatMap[B](f: (A) ⇒ Option[B]): Option[B] For the empty option situation (None in Scala), the result is a None. For the populated case (Some in Scala), the result is what f produces when given the value contained in the original Option[A] type. Of course, f is free…

    Comment linking /learning-scalaz/Monad+laws.html

    on “Swift Functors, Applicatives, and Monads in Pictures”
  14. Submitted Sbt 2.0.0 as a story · 1 points

    HN discussion
  15. > Its tied to collections, not specifically to List Actually, it transcends collections in general. As others have noted, the term "flatMap" is the concatenation of "flatten" and "map." There are other containers which support flatMap and satisfy the Monad laws[1]. An example of one in Scala is the Future[2] type. It's flatMap is described as: Creates a new future by applying a function to the successful result of t…

    Comment linking /learning-scalaz/Monad+laws.html

    on “Swift Functors, Applicatives, and Monads in Pictures”
  16. Submitted Shutting Down the Goldmine as a story · 1 points

    HN discussion
  17. I get why you didn't go over Scalaz or any other of the awesome libraries out there. Which is why I didn't mention \/ and friends except as part of a tangential sub-thread :-). IMHO your scope is spot on for Vanilla Scala and will help many. Regarding the similar documents shout-out, here's one for Scalaz which I found very well written: http://eed3si9n.com/learning-scalaz/index.html Perhaps others know of write-ups…

    Comment linking /learning-scalaz/index.html

    on “Strategic Scala Style: Principle of Least Power”
  18. Submitted Sbt and the Miners of the Wild West as a story · 1 points

    HN discussion
  19. Thanks for the detailed response and concrete examples! Reading signatures is one thing (and zip is "easy"), but without examples it doesn't really help in most of the cases. Because even if I know the concept, I don't know when it comes handy. (For example I just looked at Forall ( https://static.javadoc.io/org.scalaz/scalaz_2.12/7.2.24/scal... ... Forall is an endofunctor in an endofunctor category ... ah yes!), a…

    Comment linking /scalaz-cheat-sheet

    on “The Last Hope for Scala's Infinity War [video]”
  20. Submitted Sbt 1.4.1 as a story · 1 points

    HN discussion
  21. Scala has overloading, currying not-by-default, optional and named parameters. Some similar stuff exist*, but they interfere with those Scala features, which I value more. * https://eed3si9n.com/learning-scalaz/Applicative.html I know the Haskell operators, but the Idris syntax are new to me. BTW * has to be escaped with a \.

    Comment linking /learning-scalaz/Applicative.html

    on “What Color Is Your Monad”
  22. Submitted Console games in Scala as a story · 1 points

    HN discussion
  23. runT1ME · 2016-02-20Recommends
    https://github.com/scalaz/scalaz Monad Transformers for one. Traverse/Sequence are another super common (amazing) pattern that requires abstracting over types. http://eed3si9n.com/learning-scalaz-day12 is a nice tutorial series on it.

    Comment linking /learning-scalaz-day12

    on “Scala's Option monad versus null-conditional operator in C#”
  24. Submitted Scalaz cheat sheet as a story · 1 points

    HN discussion
  25. lmm · 2016-09-30Recommends
    I'd suggest http://eed3si9n.com/herding-cats/ . Though a lot of the time I find it's best to wait until you have a concrete use case, otherwise the concept is too abstract to make sense.

    Comment linking /herding-cats/

    on “Algebraic Patterns – Monoid Morphism”
  26. Submitted Scala: Revisiting Implicits Without Import Tax as a story · 1 points

    HN discussion
  27. If we want to call any of the methods on the wrapped type we have to call directly to the wrapped type violating Demeter. You can also use tagged types: http://eed3si9n.com/learning-scalaz/Tagged+type.html But most of the methods will untag the type. I.e., ("foo" @@ ValidJsonString).substring(3,7) will be a String, not a String @@ ValidJsonString.

    Comment linking /learning-scalaz/Tagged+type.html

    on “Scala – 1 Star Would Not Program Again”
  28. > So you're not supposed to tell people where errors occur in Scala? You're supposed to use the types `Option` and `Either` or if you're into scalaz then \/ ( http://eed3si9n.com/learning-scalaz/Either.html ) and Validation ( http://eed3si9n.com/learning-scalaz/Validation.html ). Throwing exceptions is a childish way to handle errors in FP.

    Comment linking /learning-scalaz/Validation.html

    on “Friends don't let friends do Java”
  29. > Earnest question: Have you used a monoid? Yes. I have two explicit monoids in the production codebase I'm working on professionally right now. The simple case is one where I use foldMap to put together some values in a list. In isolation it's only saving a few lines compared to an explicit summing loop - but if you can "replace a few lines with a single method call" in a lot of places in your code, you end up with…

    Comment linking /learning-scalaz/Writer.html

    on “Understanding Monoids using F#”
  30. The cool kids are quickly abandoning scalaz for cats [1], in fact the exodus may already essentially be complete, as evidenced by the author's subsequent work [2]. I guess that's what happens when your project just attracts too many _ssholes. [1] https://github.com/non/cats [2] http://eed3si9n.com/herding-cats/

    Comment linking /herding-cats/

    on “Learning Scalaz”

Search all of HN for eed3si9n.com

Linked by the same people?