Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The biggest issue is that pipes are unidirectional, while not all data flow is unidirectional.

Some functional programming styles are pipe-like in the sense that data-flow is unidirectional:

  Foo(Bar(Baz(Bif(x))))
is analagous to:

  cat x | Bif| Baz |Bar| Foo
Obviously the order of evaluation will depend on the semantics of the language used; most eager languages will fully evaluate each step before the next. (Actually this is one issue with Unix pipes; the flow-control semantics are tied to the concept of blocking I/O using a fixed-size buffer)

The idea of dataflow programming[1] is closely related to pipes and has existed for a long time, but it has mostly remained a niche, at least outside of hardware-design languages

1: https://en.wikipedia.org/wiki/Dataflow_programming



Pipes are not unidirectional on FreeBSD, interestingly.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: