In FiM++, Strings are native types. Because of this, they should be able to interact with other native types using any operator.

# Kyli Rouge

## All proposed changes

An alternate way to do concatenation. In this case, the addition operator first inspects the two variables and sees that at least one is a string. It then combines the string and the string value of the other into a single temporary string and returns that.

### Example

`Did you know that`` ``Rarity`` ``likes`` ``“Rari”``?`
`Did you know that`` ``Applejack`` ``likes`` ``“Jack”``?`
`Did you know that`` ``OTP`` ``was`` ``Rarity`` ``and`` ``Applejack``?`
`I said`` ``OTP``.`
RariJack

`Did you know that`` ``dollar sign`` ``was`` ``“\$”``?`
`Did you know that`` ``price`` ``was`` ``19.99``?`
`I said`` ``dollar sign`` ``and`` ``price``.`
\$19.99

## Subtract

Removes all instances of the right string from the left.

Removes the given number of characters from the right half of the string. If a non-integer is given, then round it to the nearest integer.

### Examples

`Did you know that`` ``cider`` ``is`` ``“Apple Family apple cider made from real Apple family apples grown in Sweet Apple Acres”``?`
`I said`` ``cider`` ``without`` ``“Apple ”``.`
Family apple cider made from real family apples grown in Sweet Acres

`Did you know that`` ``Twilight Sparkle`` ``is`` ``“a student unicorn”``?`
`I said`` ``Twilight Sparkle`` ``minus`` ``8``.`
a student

## Multiply

### Primary proposition

Concatenates the left string with itself a given number of times times and returns the result.

#### Examples

`I said`` ``“Pinkie Pie”`` ``times`` ``3``.`
Pinkie PiePinkie PiePinkie Pie

### Secondary proposition

Same behavior as above, but using suffix notation to allow for a more English-sounding phrase.

#### Examples

`I said`` ``“Pinkie Pie”`` ``3`` ``times``.`
Pinkie PiePinkie PiePinkie Pie

## Divide

Returns the first 1/`number` of the given string's characters. For instance, if a string is 20 characters long, then dividing it by 4 will return its first 5 characters.

### Example

`I said`` ``“Pinkie PiePinkie PiePinkie Pie”`` ``divided by`` ``3``.`
Pinkie Pie

## toString

For this to work properly, every object must have a toString-style method, which allows it to be converted into a string.

`<keyword:method begin>` `<whitespace>` `description` `<whitespace>` `<returns>` `<whitespace>` `<type:string>` [ `<nothing>` / `<whitespace>` ] `<punctuation>`