function R=minmax(X,I)
% minmax - return minimum and maximum along a particular dimension
%
% minmax :: [[N,M]], 1:natural -> [[2,M]].
% minmax :: [[N,M]], 2:natural -> [[N,2]].
% minmax :: [D:[[1,E]]], I:[E] -> [set(D,I,2)].
%
% The most general type means that the return array is the same size
% as the input array except that the size along the Ith dimension
% becomes 2, first element is min, second is max.
% 
% The functions is constructed so that it is idemponent:
%   minmax(X,I) == minmax(minmax(X,I),I)

R= cat(I,min(X,[],I),max(X,[],I));
