> In functional programming, > //combinator libraries// refer to a design style that emphasizes bottom-up program construction. > Such libraries define a few core data types > and provide //constructors//—functions that create initial objects—and //combinators//—functions that build larger objects from smaller pieces. > > Combinators enable the programmer to use intuitive visual and spatial reasoning > that’s vastly more powerful than linear language processing. > As a result, solving problems with combinators feels like playing with lego pieces.