import { Parser, Input, Output, List, Node } from '../parser';
import { bind } from './bind';
export function fmap
(parser: Parser.IntermediateParser
, f: (nodes: List>>, input: Parser.Input, output: Output>) => List>>): P;
export function fmap(parser: P, f: (nodes: List>>, input: Parser.Input, output: Output>) => List>>): P;
export function fmap(parser: Parser, Parser.SubParsers>, f: (nodes: List>, input: Parser.Input, output: Output>) => List>>): P;
export function fmap(parser: P, f: (nodes: List>>, input: Parser.Input, output: Output>) => List>): Parser, Parser.SubParsers>;
export function fmap(parser: Parser, f: (nodes: List>, input: Input, output: Output) => List>): Parser {
return bind(parser, (nodes, input, output) => f(nodes, input, output));
}