A primitive combinator is one that is embedded in a DSL defined in a base language (e.g. Haskell). DSLs are often built around an abstract type -a, whose implementation is hidden to the end user. It is completely opaque. Primitive combinators represented by the language are those who need to know how abstraction is actually implemented to work.
, DSL. . , - , .
Haskell. , Int Int, + . , , , , . , Bool ; .
data Bool = True | False -- ... you can't do this for Int!
"" "" DSL - , , - Haskell.
Signal . Time -> a, . ( DSL) Signal. (, , : Double, .)
$$ , , Signal Time -> a. Signal, $$. , $$ .
, mapS , , . Signal . :
mapS f signal = constS f $$ signal
, constS $$, Signal. , , . mapS "", DSL, . Signal, mapS - : constS $$, mapS .
: - , . - . , .