In some cases it is very practical, even in other (non functional) programming languages. For example, [link] (and its accompanying talk ▶ this video ) give some really great brainfood about the way currently all kinds of network protocols are implemented, and the benefits of separating the protocol (Logic) from the actual implementation (IO). You might also want to query Google or DDG for "Free monads" if you want to implement a similar layered approach in a functional language such as Scala or Haskell.
in “Ask HN: Separate Logic from IO” · View on HN