@FredrikNiemelä
Trains can be included in ordinary APL and are in most actively developed APLs (GNU is the only exception I can think of). The real benefit is not the 2-train, which is redundant as you note, but the 3-train, which lets you call several functions on the same set of arguments in a very natural way.