Каждому выражению (и другому объекту) в Maple соответствует связанный с ним тип объекта. Базисными типами объектов для выражений являются: string, integer, fraction,float , арифметические операторы ` +`, `*`, `^` , и function . Для определения типа объекта используется команда whattype:
> whattype (15/37);
> whattype ([1,2,3,4,5]);
> whattype (( x+3 ) * (y-4));
Хотя всегда можно запросить Maple о типе объекта, заранее задать тип объекта невозможно. Нельзя задать как, например, в Фортране, чтобы переменная j была всегда целой. При программировании с Maple имеются случаи, когда необходимо производить различные вычисления в зависимости от типа переменной. Команда type позволяет сделать запрос типа переменной.
> greetings := ` best regards`;
> type (greetings, integer);
> type (greetings, string);greetings:= 'greetings';
> whattype ( x = y+1 );
Имеются еще две полезные команды для анализа структуры объектов - командаhаstyрe , которая сообщает, содержит ли объект подобъект данного типа, и командаhas , которая сообщает, содержится ли определенный подобъект в объекте.
Приведем примеры:
> hastype (( x+1/2 ) * exp (3), fraction);
> hastype ( x^2+3*x+5, `*` );
> has( x^2+3 * x+5, 3 );
> has( x^2+3 * x+5, 2 * x );
> hastype ( int ( exp (-x^2), x ), fraction); int ( exp (-x^2), x );
В то время как эти примеры довольно очевидны, hаstyрe и has неоценимы при работе с очень большими объектами.