Alternately, any number of procedures can be merged into a single procedure that takes as argument a variant record (or algebraic data type) representing the selection of a procedure and its arguments; the merged procedure then dispatches on its argument to execute the corresponding code and uses direct recursion to call self as appropriate.
Алтернативно, било који број процедура може да се споји у једну процедуру која узима као аргумент варијанту записа (или алгебарски тип података) која представља избор процедуре и њених аргумената; спојена процедура онда пошаље свом аргументу да изврши одговарајући код и користи директну рекурзију да позове себе.