The Return of Stream I/O @andrestaltz
Cycle.js.org A functional and reactive JavaScript framework for cleaner code
Haskell A pure functional programming language
Haskell A pure functional programming language Logic Effects
Haskell A pure functional programming language Logic Effects
Monadic I/O Stream I/O Continuation I/O Logic Effects
Monadic I/O Stream I/O Continuation I/O Logic Effects
Monadic I/O Logic Effects
Program Compiler, binary
Stream I/O Logic Effects
Program Operating binary System
Requests "Write" msgs Program Operating binary System
Requests "Write" msgs Program Operating binary System "Read" msgs Responses
Requests "Write" msgs Program Operating binary System "Read" msgs Responses
Reactive system versus Transformational system
(1998) "A transformational system repeatedly waits for all its inputs to arrive, carries out some processing, and outputs the results when the processing is done."
(start) Inputs Processing Output (done)
Examples: Compiler UNIX commands
"A reactive system continuously interacts with its environment, using inputs and outputs that are either continuous in time or discrete. The inputs and outputs are often asynchronous, meaning that they may arrive or change values unpredictably at any point in time."
Input Output Processing
Examples: Real-time systems User interfaces Websites Servers
Transformational programs Reactive programs 1990 2000 2010
BASIC FORTRAN Pascal JavaScript C Java Transformational programs Reactive programs 1990 2000 2010
Haskell Stream I/O BASIC FORTRAN Pascal JavaScript C Java Transformational programs Reactive programs 1990 2000 2010
Monadic I/O good for transformational programs 👎 BASIC FORTRAN Pascal JavaScript C Java Transformational programs Reactive programs 1990 2000 2010
Haskell Monadic I/O BASIC FORTRAN Pascal JavaScript C Java Transformational programs Reactive programs 1990 2000 2010
Multimedia BASIC FORTRAN Pascal JavaScript C Java Transformational programs Reactive programs 1990 2000 2010
Period of confusion BASIC FORTRAN Pascal JavaScript C Java Transformational programs Reactive programs 1990 2000 2010
Period of confusion BASIC FORTRAN Pascal JavaScript C Java Transformational programs Reactive programs 1990 2000 2010
Shared-memory concurrency BASIC FORTRAN Pascal JavaScript C Java Transformational programs Reactive programs 1990 2000 2010
Shared-memory concurrency BASIC FORTRAN Pascal JavaScript C Java Transformational programs Reactive programs 1990 2000 2010
Early JavaScript apps BASIC FORTRAN Pascal JavaScript C Java Transformational programs Reactive programs 1990 2000 2010
Early JavaScript apps BASIC FORTRAN Pascal JavaScript C Java Transformational programs Reactive programs 1990 2000 2010
BASIC FORTRAN Pascal JavaScript C Java Transformational programs Reactive programs 1990 2000 2010
Asynchronous Continuous interaction BASIC FORTRAN Pascal JavaScript C Java Transformational programs Reactive programs 1990 2000 2010
Asynchronous Continuous interaction BASIC FORTRAN Pascal JavaScript C Java Transformational programs Reactive programs 1990 2000 2010
Message passing concurrency BASIC FORTRAN Pascal JavaScript C Java Transformational programs Reactive programs 1990 2000 2010
Requests Program Operating binary System Responses Stream I/O Message passing Lazy lists Blocking
Requests Program Operating binary System Responses "Stream I/O" Message passing Lazy lists Streams Blocking Asynchronous
Requests Program Operating binary System Responses Cycle.js Message passing Streams Asynchronous
Stream of DOM events Stream of actions Stream of reducers Stream of state Stream of markup to the DOM
Cycle.js 👎 Asynchronous message passing 👎 User interfaces or any reactive system 👎 Separation of concerns 👏 Handling question-and-answer I/O
Elm
Task "Do this and then that and tell me the Elm Elm result" program runtime Result
Recommend
More recommend