Scheme supports a functional style of programming (when you restrict use of procedures which alter already existent object, such as set-car!, set-cdr!, vector-set!, vector-fill!, etc.) as well as an imperative style of programming when the above mentioned procedures are used. J is a functional notation where the model of computation consists of application of functions to arguments without side effects (roll and deal have side effects; pseudo random state is modified). Once an item is created in memory it is never modified; functions may be applied to such items producing new items. Functional composition is the primary model for computation.