compose ( quot1 quot2 -- compose ) (original) (raw)

Vocabulary
kernel

Inputs

quot1 a callable
quot2 a callable

Outputs

compose a composed

Word description
Quotation composition. Outputs a callable which calls quot1 followed by quot2.

Notes
The following two lines are equivalent:

compose call append call

However, compose runs in constant time, and the optimizing compiler is able to compile code which calls composed quotations.

See also
curry, curried, prepose, composed

Definition

USING: classes.tuple.private quotations slots ;

IN: kernel

: compose ( quot1 quot2 -- compose )
[ dup callable? [ \ callable bad-slot-value ] unless ] dip
dup callable? [ \ callable bad-slot-value ] unless
{ composed 2 1 tuple 236985587512 composed 3772598122078 }
; flushable