## CPS710 |
## Assignment 3 | |

## HL Typing |

- Explicit types HL programmers can manipulate literals and variables of these types:
- Integers: objects of that type represent non-negative integers, i.e whole
numbers which are greater than or equal to 0.
HL integers should be represented by instances of the Java BigInteger class.

- Boolean: programmers can declare and use Boolean variable or literals.
However, since conditions are only used as tests for if and while statements,
and boolean operations are only defined in conditions, this limits the way boolean variables
are used, and HL booleans are therefore not a full-fledged type like in OOP languages such as
Java.
HL booleans should be represented by instances of the Java Boolean class.

- Polynomial: HL polynomials are objects that represent polynomials in one variable
whose coefficients and exponents are integers. The coefficients must be BigIntegers, but
you can assume that the exponent are integers which can be positive or negative
(i.e. they are BigIntegers that are small enough to be converted into Integers and ints).
HL polynomials will need their own HLpolyn class. This class will need to support the following HL features:

- The HL foreach statement. See implicit loops for details.
- The builtin term, degree and coeff functions. See built-in functions for details.

- Implicit types HL also offers string literals that can be used as parameters to print statements. Strings cannot be used anywhere else in the language: it is not possible to define string variables and there are no string operations.

HL strings should be represented by instances of the Java String class.

Last modified Monday, 05-Sep-2016 09:04:57 EDT