A higher kinded type is a concept that reifies a type constructor as an actual type.
A type constructor can be thought of in these analogies:
- like a function in the type universe
- as a type with a "hole" in it
| use std::rc::Rc; | |
| trait HKT<U> { | |
| type C; // Current type | |
| type T; // Type with C swapped with U | |
| } | |
| macro_rules! derive_hkt { | |
| ($t:ident) => { | |
| impl<T, U> HKT<U> for $t<T> { |
| #!/bin/sh | |
| # Update: As of March 24th 2017 this script won't work. | |
| # The script at https://get.haskellstack.org/ is broken | |
| # because the binary of Stack 1.4 for ARM is missing from https://www.stackage.org/stack/ . | |
| # You can still get the binary for Stack 1.3.2 from | |
| # https://github.com/commercialhaskell/stack/releases/download/v1.3.2/stack-1.3.2-linux-arm.tar.gz | |
| # and place it at $USR_LOCAL_BIN/stack in your system. | |
| # Once Stack is installed you can proceed with the Install LLVM step |
| //! An adapter for merging the output of two streams, where | |
| //! the stream resolves as soon either stream resolves. | |
| use futures::{Poll, Async}; | |
| use futures::stream::{Stream, Fuse}; | |
| pub struct AndSelect<S1, S2> { | |
| stream1: Fuse<S1>, | |
| stream2: Fuse<S2>, | |
| flag: bool, |