bitcoin-hs-0.0.1: Partial implementation of the Bitcoin protocol (as of 2013)

Safe HaskellSafe
LanguageHaskell98

Bitcoin.Misc.Bifunctor

Description

Bifunctors and more.

Used primarily for transactions, which are parametrized in both input scripts and output scripts.

Synopsis

Documentation

class BiFunctor f where Source #

Methods

fmapFst :: (a -> b) -> f a c -> f b c Source #

fmapSnd :: (b -> c) -> f a b -> f a c Source #

fmapBoth :: (a -> c) -> (b -> d) -> f a b -> f c d Source #

Instances

BiFunctor Tx Source # 

Methods

fmapFst :: (a -> b) -> Tx a c -> Tx b c Source #

fmapSnd :: (b -> c) -> Tx a b -> Tx a c Source #

fmapBoth :: (a -> c) -> (b -> d) -> Tx a b -> Tx c d Source #

BiFunctor BlockChain2 Source # 

Methods

fmapFst :: (a -> b) -> BlockChain2 a c -> BlockChain2 b c Source #

fmapSnd :: (b -> c) -> BlockChain2 a b -> BlockChain2 a c Source #

fmapBoth :: (a -> c) -> (b -> d) -> BlockChain2 a b -> BlockChain2 c d Source #

BiFunctor Block2 Source # 

Methods

fmapFst :: (a -> b) -> Block2 a c -> Block2 b c Source #

fmapSnd :: (b -> c) -> Block2 a b -> Block2 a c Source #

fmapBoth :: (a -> c) -> (b -> d) -> Block2 a b -> Block2 c d Source #

class BiFoldable f where Source #

Minimal complete definition

bifoldl, bifoldr

Methods

bifoldl :: (a -> b -> a) -> (a -> c -> a) -> a -> f b c -> a Source #

bifoldr :: (b -> a -> a) -> (c -> a -> a) -> f b c -> a -> a Source #

Instances

BiFoldable Tx Source # 

Methods

bifoldl :: (a -> b -> a) -> (a -> c -> a) -> a -> Tx b c -> a Source #

bifoldr :: (b -> a -> a) -> (c -> a -> a) -> Tx b c -> a -> a Source #

BiFoldable BlockChain2 Source # 

Methods

bifoldl :: (a -> b -> a) -> (a -> c -> a) -> a -> BlockChain2 b c -> a Source #

bifoldr :: (b -> a -> a) -> (c -> a -> a) -> BlockChain2 b c -> a -> a Source #

BiFoldable Block2 Source # 

Methods

bifoldl :: (a -> b -> a) -> (a -> c -> a) -> a -> Block2 b c -> a Source #

bifoldr :: (b -> a -> a) -> (c -> a -> a) -> Block2 b c -> a -> a Source #

toListFst :: BiFoldable f => f a b -> [a] Source #

toListSnd :: BiFoldable f => f a b -> [b] Source #

class BiTraversable f where Source #

This is a rather nonstandard version of traverseable, but this is what we need

Methods

mapAccumLFst :: (acc -> b -> (acc, c)) -> acc -> f b d -> (acc, f c d) Source #

mapAccumLSnd :: (acc -> c -> (acc, d)) -> acc -> f b c -> (acc, f b d) Source #

mapAccumLBoth :: (acc -> b -> (acc, d)) -> (acc -> c -> (acc, e)) -> acc -> f b c -> (acc, f d e) Source #

Instances

BiTraversable Tx Source # 

Methods

mapAccumLFst :: (acc -> b -> (acc, c)) -> acc -> Tx b d -> (acc, Tx c d) Source #

mapAccumLSnd :: (acc -> c -> (acc, d)) -> acc -> Tx b c -> (acc, Tx b d) Source #

mapAccumLBoth :: (acc -> b -> (acc, d)) -> (acc -> c -> (acc, e)) -> acc -> Tx b c -> (acc, Tx d e) Source #

mapAccumLFst_ :: BiTraversable f => (acc -> b -> (acc, c)) -> acc -> f b d -> f c d Source #

mapAccumLSnd_ :: BiTraversable f => (acc -> c -> (acc, d)) -> acc -> f b c -> f b d Source #

mapAccumLBoth_ :: BiTraversable f => (acc -> b -> (acc, d)) -> (acc -> c -> (acc, e)) -> acc -> f b c -> f d e Source #

zipWithFst :: BiTraversable f => (x -> a -> b) -> [x] -> f a c -> f b c Source #

Note: this is unsafe (the list must be long enough)

zipWithSnd :: BiTraversable f => (y -> b -> c) -> [y] -> f a b -> f a c Source #