# Integer

### From Erights

Kevin Reid (Talk | contribs) |
(mention guard, etc) |
||

Line 1: | Line 1: | ||

- | [[Integer]] is one of the built-in numeric types in [[ELib]]. | + | [[Integer]] is one of the built-in numeric types in [[ELib]]. Integers may be literals in [[E language]] source. |

+ | |||

+ | In the [[universal environment]], the Integer guard is named <code>int</code>. | ||

==Maker protocol== | ==Maker protocol== | ||

Line 12: | Line 14: | ||

<var>string</var> must contain only an optional leading minus sign "-" (U+002D), followed by at least one digit of the specified base ("0"-"9" for bases up to 10, then "a"-"z" or "A"-"Z" for additional digits up to base 36). | <var>string</var> must contain only an optional leading minus sign "-" (U+002D), followed by at least one digit of the specified base ("0"-"9" for bases up to 10, then "a"-"z" or "A"-"Z" for additional digits up to base 36). | ||

+ | |||

+ | ==Tests== | ||

+ | |||

+ | Many E implementations have multiple representations of Integers for different size ranges. These implementations ''must'' be indistinguishable, or there must be exactly one representation for any given integer. | ||

+ | |||

+ | ? def a := 4 | ||

+ | # value: 4 | ||

+ | |||

+ | ? def b := (400000000000000000000 // 100000000000000000000) | ||

+ | # value: 4 | ||

+ | |||

+ | ? a == b | ||

+ | # value: true | ||

+ | |||

+ | ? a.__getAllegedType() | ||

+ | # value: int | ||

+ | |||

+ | ? b.__getAllegedType() | ||

+ | # value: int | ||

+ | |||

+ | ? 400000000000000000000.__getAllegedType() | ||

+ | # value: int | ||

[[Category:ELib specification]] | [[Category:ELib specification]] | ||

{{stub}} | {{stub}} |

## Latest revision as of 18:25, 26 July 2011

**Integer** is one of the built-in numeric types in ELib. Integers may be literals in E language source.

In the universal environment, the Integer guard is named `int`

.

## Contents |

## Maker protocol

### run/1

run(`string` :String) :**Integer**

Equivalent to

.
*thisInteger*.run(`string`, 10)

### run/2

run(`string` :String, base :(0..36)) :**Integer**

Convert `string` to an integer. If it does not match the following syntax then an exception is thrown. XXX If sealed throw is accepted, then there must be a way to supply an ejector to handle failure here.

`string` must contain only an optional leading minus sign "-" (U+002D), followed by at least one digit of the specified base ("0"-"9" for bases up to 10, then "a"-"z" or "A"-"Z" for additional digits up to base 36).

## Tests

Many E implementations have multiple representations of Integers for different size ranges. These implementations *must* be indistinguishable, or there must be exactly one representation for any given integer.

? def a := 4 # value: 4 ? def b := (400000000000000000000 // 100000000000000000000) # value: 4 ? a == b # value: true ? a.__getAllegedType() # value: int ? b.__getAllegedType() # value: int ? 400000000000000000000.__getAllegedType() # value: int

*This page is a stub; it should be expanded with more information. If doing so, check the original E web site and the mailing list archives for content which could be moved into this page.*