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, |