# Looking for a combinator name

## Christopher Diggins — 2008-12-06 13:42:00

    Hi all,

    I am looking for a name for a combinator that is equivalent to:

    In Cat: dip apply

    Or in Joy: dip i

    This turns out to be a very useful combinator when doing code

    compression. Given two functions:

    define f { a0 .. aN x b0 .. bN }

    define g { a0 .. aN y b0 .. bN }

    We can reduce the size by rewriting it as:

    define h { [a0 .. aN] dip apply b0 .. bN }

    define f { [x] h }

    define g { [y] h }

    Any suggestions would be appreciated.

    - Christopher

## John Nowak — 2008-12-07 13:08:04

    On Dec 6, 2008, at 8:42 AM, Christopher Diggins wrote:

     > I am looking for a name for a combinator that is equivalent to:

    >

    > In Cat: dip apply

    > Or in Joy: dip i

     I can't say that I understand what you'd use this for and hence I'm

    having trouble coming up with a name. I've often used 'dup dip i' (aka

    'twice'), but never just 'dip i'. Do you have a more concrete example?

    - John

## Christopher Diggins — 2008-12-07 17:28:45

    On Sun, Dec 7, 2008 at 8:08 AM, John Nowak <john@...> wrote:

     > On Dec 6, 2008, at 8:42 AM, Christopher Diggins wrote:

    >

    >> I am looking for a name for a combinator that is equivalent to:

    >>

    >> In Cat: dip apply

    >> Or in Joy: dip i

    >

    > I can't say that I understand what you'd use this for and hence I'm

    > having trouble coming up with a name. I've often used 'dup dip i' (aka

    > 'twice'), but never just 'dip i'. Do you have a more concrete example?

     No I don't. I have only seen it when refactoring concatenative code.

    Lets call it q for a second:

    ... [a] [b] q => ... b a

    I believe the following is the applicative form:

    \abc.b(a(c))

    Another way of writing it is:

    q = swap compose apply

    or in Joy:

    q = swap cat i

    - Christopher

## Christopher Diggins — 2008-12-07 17:30:37

    Just found a name at : http://tunes.org/~iepos/joy.html

    Brent calls it "sap".

    - Christopher

     On Sun, Dec 7, 2008 at 12:28 PM, Christopher Diggins <cdiggins@...> wrote:

    > On Sun, Dec 7, 2008 at 8:08 AM, John Nowak <john@...> wrote:

    >> On Dec 6, 2008, at 8:42 AM, Christopher Diggins wrote:

    >>

    >>> I am looking for a name for a combinator that is equivalent to:

    >>>

    >>> In Cat: dip apply

    >>> Or in Joy: dip i

    >>

    >> I can't say that I understand what you'd use this for and hence I'm

    >> having trouble coming up with a name. I've often used 'dup dip i' (aka

    >> 'twice'), but never just 'dip i'. Do you have a more concrete example?

    >

    > No I don't. I have only seen it when refactoring concatenative code.

    >

    > Lets call it q for a second:

    >

    > ... [a] [b] q => ... b a

    >

    > I believe the following is the applicative form:

    >

    > \abc.b(a(c))

    >

    > Another way of writing it is:

    >

    > q = swap compose apply

    >

    > or in Joy:

    >

    > q = swap cat i

    >

    > - Christopher

    >