News for hackers. Stuff that matters.
Re:Show HN: Koda, a typesafe functional toolkit for Python by hackandtrip on Monday February 07, 2022 @01:34PM (#30249006)
Good luck checking for `None` equality and indent your code like 5 times... a sort of railway programming[0] avoids the awkward checks for values, making functions work with higher order types.

0: https://www.greenbird.com/news/railway-oriented-programming-....

Re:Show HN: Koda, a typesafe functional toolkit for Python by ReleaseCandidat on Monday February 07, 2022 @01:41PM (#30249103)
The original Railway:

https://fsharpforfunandprofit.com/rop/

And his 'Against Railway-Oriented Programming':

https://fsharpforfunandprofit.com/posts/against-railway-orie...

Re:Show HN: Koda, a typesafe functional toolkit for Python by IshKebab on Tuesday February 08, 2022 @04:17AM (#30256357)
Ok

  if a is None:
    raise Exception()
  if a.b is None:
    raise Exception()
  if a.b.c is None:
    raise Exception()
One of the advantages of Python/Typescript style type hinting is that it avoids the mega-nested `if`s that you often have to resort to in Rust. In Rust the above would not work:

  if a.is_none() {
    bail!();
  }
  if a.b. // nope! a is still Option<>.
It may be possible to fix that when enum variants are distinct types but as it stands you often have to do lots of indenting.
Re:Show HN: Koda, a typesafe functional toolkit for Python by impoppy on Monday February 07, 2022 @01:59PM (#30249358)
How is this different from match case ok case err or from if result.val?
Re:Show HN: Koda, a typesafe functional toolkit for Python by hackandtrip on Monday February 07, 2022 @02:34PM (#30249826)
Well, the most basic pro is to avoid indentation and have pure function which are clear and have less assumption to take into account; if I know that my pipes always return me a result such as the one I want, and the "bad path" is discarded automatically, code is way cleaner.

Imagine a code without `if result is not None` basically!