Каждому выражению (и другому объекту) в Maple соответствует связанный с ним тип объекта. Базисными типами объектов для выражений являются: string, integer, fraction,float , арифметические операторы ` +`, `*`, `^` , и function . Для определения типа объекта используется команда whattype:
> whattype (15/37);
![[Maple Math]](http://www.exponenta.ru/soft/Maple/manson/poweredition/chapter4/images/1maple132.gif)
> whattype ([1,2,3,4,5]);
![[Maple Math]](http://www.exponenta.ru/soft/Maple/manson/poweredition/chapter4/images/1maple133.gif)
> whattype (( x+3 ) * (y-4));
![[Maple Math]](http://www.exponenta.ru/soft/Maple/manson/poweredition/chapter4/images/1maple134.gif)
Хотя всегда можно запросить Maple о типе объекта, заранее задать тип объекта невозможно. Нельзя задать как, например, в Фортране, чтобы переменная j была всегда целой. При программировании с Maple имеются случаи, когда необходимо производить различные вычисления в зависимости от типа переменной. Команда type позволяет сделать запрос типа переменной.
> greetings := ` best regards`;
![[Maple Math]](http://www.exponenta.ru/soft/Maple/manson/poweredition/chapter4/images/1maple135.gif)
> type (greetings, integer);
![[Maple Math]](http://www.exponenta.ru/soft/Maple/manson/poweredition/chapter4/images/1maple136.gif)
> type (greetings, string);greetings:= 'greetings';
![[Maple Math]](http://www.exponenta.ru/soft/Maple/manson/poweredition/chapter4/images/1maple137.gif)
![[Maple Math]](http://www.exponenta.ru/soft/Maple/manson/poweredition/chapter4/images/1maple138.gif)
> whattype ( x = y+1 );
![[Maple Math]](http://www.exponenta.ru/soft/Maple/manson/poweredition/chapter4/images/1maple139.gif)
Имеются еще две полезные команды для анализа структуры объектов - командаhаstyрe , которая сообщает, содержит ли объект подобъект данного типа, и командаhas , которая сообщает, содержится ли определенный подобъект в объекте.
Приведем примеры:
> hastype (( x+1/2 ) * exp (3), fraction);
![[Maple Math]](http://www.exponenta.ru/soft/Maple/manson/poweredition/chapter4/images/1maple140.gif)
> hastype ( x^2+3*x+5, `*` );
![[Maple Math]](http://www.exponenta.ru/soft/Maple/manson/poweredition/chapter4/images/1maple141.gif)
> has( x^2+3 * x+5, 3 );
![[Maple Math]](http://www.exponenta.ru/soft/Maple/manson/poweredition/chapter4/images/1maple142.gif)
> has( x^2+3 * x+5, 2 * x );
![[Maple Math]](http://www.exponenta.ru/soft/Maple/manson/poweredition/chapter4/images/1maple143.gif)
> hastype ( int ( exp (-x^2), x ), fraction); int ( exp (-x^2), x );
![[Maple Math]](http://www.exponenta.ru/soft/Maple/manson/poweredition/chapter4/images/1maple144.gif)
![[Maple Math]](http://www.exponenta.ru/soft/Maple/manson/poweredition/chapter4/images/1maple145.gif)
В то время как эти примеры довольно очевидны, hаstyрe и has неоценимы при работе с очень большими объектами.
