# Essays/Capped Fork

An isolated sequence of verbs` f g h `is defined as a *fork*:

(f g h) y ↔ ( f y) g ( h y) x (f g h) y ↔ (x f y) g (x h y)

However, if` f `is the verb` [: `(*cap*) the definition is:

([: g h) y ↔ g ( h y) x ([: g h) y ↔ g (x h y)

What is to be accomplished with the capped fork is to implement "at"` `(`g@:h`)` `as
a fork, because with (the ordinary) fork and "at" there is
expressive completeness:
Every explicit sentence with
one or two arguments which does not use the argument(s)
as an operator argument, can be expressed tacitly by
fork and at. When` [: g h `is interpreted as` g@:h` ,` `
it means that "everything" can be expressed as a fork
(ordinary and capped).

How is the magic of capped fork accomplished? When the
fork parser action is invoked for` f g h `, it "knows"
what` f` ,` g` ,` `and` h `are, and if` f `is` [:` ,` ` it produces something
different than if` f `is not. As a thought experiment,
one could imagine using the leading verb` + `to denote
the capped fork. But then that would rule out the use
of` + g h `as an ordinary fork. Alternatively one could use
the verb` C.A.p. ` :-) to denote the capped fork.
That too would rule out` (C.A.p.) g h `as an ordinary fork,
but` C.A.p. `is much less useful than` + `eh?
Likewise the capped fork rules out the use of` [: g h `
as an ordinary fork, but since the monadic and dyadic
domains of the verb` [: `are empty (`[:y `and` x[:y `
signal domain error for all` x `and` y`), not much is lost.

The same place where this capped fork magic is
effected is also where the magic for` > i. 1: `and the like happens.
Consider the benchmark:

ts=: 6!:2 , 7!:2@] NB. time and space (seconds and bytes) x=: 1e6 ?@$ 0 ts 'x (> i. 1:) 0.5' 2.48635e_5 1216 ts '(x>0.5) i. (x 1: 0.5)' 0.143149 5.24403e6

It is evident from the benchmark that there must be some magic (special code)
going on in` > i. 1:` ,` `because the ordinary evaluation of the
fork` x (> i. 1:) 0.5 `is` (x>0.5) i. (x 1: 1) `.

### See also

Contributed by Roger Hui.