Integer
Integer — Whole number arithmetic and operations.
Integers in Beamtalk are arbitrary precision (Erlang integers).
Arithmetic operations return integers except / which returns
a Float. Use div: for integer (truncating) division.
BEAM Mapping
Beamtalk integers map directly to Erlang integers.
Examples
42 class // => Integer
3 + 4 // => 7
2 ** 100 // => 1267650600228229401496703205376
17 % 5 // => 2
Methods
- + other
- - other
- * other
- / other
- div: other
- % other
- ** other
- =:= other
- =/= other
- /= other
- < other
- > other
- <= other
- >= other
- negated
- abs
- rounded
- ceiling
- floor
- truncated
- isEven
- isOdd
- min: other
- max: other
- timesRepeat: block
- to: end do: block
- to: end by: step do: block
- to: stop
- to: stop by: step
- asFloat
- asString
- printString
- bitAnd: other
- bitOr: other
- bitXor: other
- bitShift: n
- bitNot
- factorial
- gcd: other
- lcm: other
- isLetter
- isDigit
- isUppercase
- isLowercase
- isWhitespace
- sqrt
- log
- ln
- log2
- log10
- exp
- raisedTo: exponent
Instance Methods
Add an integer to the receiver.
Examples
3 + 4 // => 7
-1 + 1 // => 0
Subtract an integer from the receiver.
Examples
10 - 3 // => 7
0 - 5 // => -5
Multiply the receiver by an integer.
Examples
6 * 7 // => 42
-3 * 4 // => -12
Divide the receiver by a number (float division).
Always returns a Float, even when both operands are integers.
For integer (truncating) division, use div:.
Examples
10 / 3 // => 3.3333333333333335
42 / 7 // => 6.0
Integer (truncating) division of the receiver by another integer.
Truncates toward zero. For float division, use /.
Examples
10 div: 3 // => 3
42 div: 7 // => 6
7 div: 2 // => 3
-7 div: 2 // => -3
Remainder after integer division.
Examples
17 % 5 // => 2
10 % 3 // => 1
Raise the receiver to a power.
Examples
2 ** 10 // => 1024
3 ** 3 // => 27
Test strict equality with another integer.
Examples
42 =:= 42 // => true
1 =:= 2 // => false
Test strict inequality with another integer.
Examples
1 =/= 2 // => true
42 =/= 42 // => false
Test inequality with another integer.
Examples
1 /= 2 // => true
42 /= 42 // => false
Test if the receiver is less than another integer.
Examples
1 < 2 // => true
5 < 3 // => false
Test if the receiver is greater than another integer.
Examples
5 > 3 // => true
1 > 2 // => false
Test if the receiver is less than or equal to another integer.
Examples
1 <= 2 // => true
3 <= 3 // => true
Test if the receiver is greater than or equal to another integer.
Examples
5 >= 3 // => true
3 >= 3 // => true
Negate the receiver.
Examples
5 negated // => -5
-3 negated // => 3
Absolute value of the receiver.
Examples
-42 abs // => 42
7 abs // => 7
Round to the nearest integer. Identity for Integer.
Provided so numeric code can call rounded on any Number without
branching on Integer vs Float.
Examples
42 rounded // => 42
-7 rounded // => -7
Smallest integer greater than or equal to the receiver. Identity for Integer.
Provided so numeric code can call ceiling on any Number without
branching on Integer vs Float.
Examples
42 ceiling // => 42
-7 ceiling // => -7
Largest integer less than or equal to the receiver. Identity for Integer.
Provided so numeric code can call floor on any Number without
branching on Integer vs Float.
Examples
42 floor // => 42
-7 floor // => -7
Truncate toward zero. Identity for Integer.
Provided so numeric code can call truncated on any Number without
branching on Integer vs Float.
Examples
42 truncated // => 42
-7 truncated // => -7
Test if the receiver is even.
Examples
4 isEven // => true
7 isEven // => false
Test if the receiver is odd.
Examples
7 isOdd // => true
4 isOdd // => false
Return the smaller of the receiver and other.
Examples
3 min: 7 // => 3
10 min: 2 // => 2
Return type is Number because other may be any numeric type;
if other is the smaller value, the result carries its runtime type.
Return the larger of the receiver and other.
Examples
3 max: 7 // => 7
10 max: 2 // => 10
Return type is Number because other may be any numeric type;
if other is the larger value, the result carries its runtime type.
Evaluate block the receiver number of times.
Examples
3 timesRepeat: [Transcript show: "hi"]
Iterate from the receiver to end, evaluating block with each value.
Examples
1 to: 3 do: [:i | Transcript show: i]
Iterate from the receiver to end by step, evaluating block with each value.
Examples
1 to: 10 by: 3 do: [:i | Transcript show: i]
Return an Interval from the receiver to stop with step 1.
Examples
1 to: 10 // => (1 to: 10)
Return an Interval from the receiver to stop with the given step.
Raises an error if step is zero.
Examples
1 to: 10 by: 2 // => (1 to: 10 by: 2)
Convert the receiver to a Float.
Examples
42 asFloat // => 42.0
Convert the receiver to its String representation.
Examples
42 asString // => "42"
Return a developer-readable string representation.
Examples
42 printString // => "42"
Bitwise AND with another integer.
Examples
12 bitAnd: 10 // => 8
Bitwise OR with another integer.
Examples
12 bitOr: 10 // => 14
Bitwise XOR with another integer.
Examples
12 bitXor: 10 // => 6
Bit shift the receiver by n positions. Positive shifts left, negative shifts right.
Examples
1 bitShift: 4 // => 16
16 bitShift: -2 // => 4
Bitwise complement of the receiver.
Examples
0 bitNot // => -1
Factorial of the receiver. Raises an error for negative integers.
Examples
5 factorial // => 120
0 factorial // => 1
Greatest common divisor of the receiver and other.
Examples
12 gcd: 8 // => 4
7 gcd: 5 // => 1
Least common multiple of the receiver and other.
Examples
4 lcm: 6 // => 12
3 lcm: 5 // => 15
Test if the codepoint is a Unicode letter.
Examples
65 isLetter // => true
48 isLetter // => false
Test if the codepoint is a Unicode digit.
Examples
48 isDigit // => true
65 isDigit // => false
Test if the codepoint is an uppercase letter.
Examples
65 isUppercase // => true
97 isUppercase // => false
Test if the codepoint is a lowercase letter.
Examples
97 isLowercase // => true
65 isLowercase // => false
Test if the codepoint is a whitespace character.
Examples
32 isWhitespace // => true
65 isWhitespace // => false
Square root of the receiver (returns Float).
Examples
16 sqrt // => 4.0
2 sqrt // => 1.4142135623730951
Natural logarithm (base e) of the receiver (returns Float).
Examples
1 log // => 0.0
Natural logarithm (base e) of the receiver. Alias for log.
Examples
1 ln // => 0.0
Base-2 logarithm of the receiver (returns Float).
Examples
8 log2 // => 3.0
Base-10 logarithm of the receiver (returns Float).
Examples
100 log10 // => 2.0
Euler's number (e) raised to the power of the receiver (returns Float).
Examples
0 exp // => 1.0
1 exp // => 2.718281828459045
Raise the receiver to the power of exponent.
Returns Integer when the exponent is a non-negative Integer, Float otherwise (negative or Float exponent).
Examples
2 raisedTo: 10 // => 1024
2 raisedTo: -1 // => 0.5
Inherited Methods
From Number
Strict equality comparison.
Strict inequality comparison.
Less than.
Greater than.
Less than or equal.
Greater than or equal.
Test if the receiver is zero.
Examples
0 isZero // => true
5 isZero // => false
Test if the receiver is positive (greater than zero).
Examples
5 isPositive // => true
-3 isPositive // => false
0 isPositive // => false
Test if the receiver is negative (less than zero).
Examples
-3 isNegative // => true
5 isNegative // => false
Return 1 for positive, -1 for negative, 0 for zero.
Examples
42 sign // => 1
-7 sign // => -1
0 sign // => 0
Test if the receiver is between min and max (inclusive).
Examples
5 between: 1 and: 10 // => true
15 between: 1 and: 10 // => false
Override inspect to use printString rather than the field-based format defined in Value. Numbers are primitives, not map-based value objects.
From Value
Return a developer-readable string representation showing fields.
Produces ClassName(field: value, ...). Field values are recursively
inspected — strings are quoted, nested objects show their own inspect.
A class with no fields produces ClassName().
Examples
ValuePoint x: 3 y: 4 inspect // => "ValuePoint(x: 3, y: 4)"
ValuePoint new inspect // => "ValuePoint(x: 0, y: 0)"
From Object
Return the class of the receiver.
Examples
42 class // => Integer
"hello" class // => String
Test if the receiver is nil. Returns false for all objects except nil.
Examples
42 isNil // => false
nil isNil // => true
Test if the receiver is not nil. Returns true for all objects except nil.
Examples
42 notNil // => true
nil notNil // => false
If the receiver is nil, evaluate nilBlock. Otherwise return self.
Examples
42 ifNil: [0] // => 42
nil ifNil: [0] // => 0
If the receiver is not nil, evaluate notNilBlock with self.
Examples
42 ifNotNil: [:v | v + 1] // => 43
nil ifNotNil: [:v | v + 1] // => nil
If nil, evaluate nilBlock; otherwise evaluate notNilBlock with self.
Examples
42 ifNil: [0] ifNotNil: [:v | v + 1] // => 43
nil ifNil: [0] ifNotNil: [:v | v + 1] // => 0
If not nil, evaluate notNilBlock with self; otherwise evaluate nilBlock.
Examples
42 ifNotNil: [:v | v + 1] ifNil: [0] // => 43
nil ifNotNil: [:v | v + 1] ifNil: [0] // => 0
Return a developer-readable string representation.
Default implementation returns "a ClassName". Subclasses such as
Integer, String, and List override this to return richer output.
Examples
42 printString // => "42"
Return a user-facing string representation for display purposes.
Default implementation delegates to printString. Subclasses such as
String and Symbol override this to return a more readable form without
developer annotations (e.g. no surrounding quotes or # prefix).
Examples
42 displayString // => "42"
Inspect the receiver.
Examples
42 inspect // => "42"
Return the receiver itself. Useful for cascading side effects.
Examples
42 yourself // => 42
Return a hash value for the receiver.
Examples
42 hash
Test if the receiver responds to the given selector.
Examples
42 respondsTo: #abs // => true
Return the names of fields.
Examples
42 fieldNames // => #()
Return the value of the named field.
Examples
object fieldAt: #name
Set the value of the named field (returns new state).
Examples
object fieldAt: #name put: "Alice"
Send a unary message dynamically.
Examples
42 perform: #abs // => 42
Send a message dynamically with arguments.
Examples
3 perform: #max: withArguments: #(5) // => 5
Raise an error indicating this method must be overridden by a subclass.
Examples
self subclassResponsibility
Raise an error indicating this method has not yet been implemented.
Use this for work-in-progress stubs. Distinct from subclassResponsibility,
which signals an interface contract violation.
Examples
self notImplemented
Send aValue to the current transcript without a trailing newline.
Nil-safe: does nothing when no transcript is set (batch compile, tests).
Examples
42 show: "value: "
Send aValue to the current transcript followed by a newline.
Nil-safe: does nothing when no transcript is set (batch compile, tests).
Examples
42 showCr: "hello world"
Test if the receiver is an instance of aClass or any of its subclasses.
For class-object receivers, follows Smalltalk semantics: self class
is the metaclass, so the check walks the parallel metaclass hierarchy.
The parallel chain is grounded at ProtoObject class superclass == Class
(ADR 0036), so the metaclass tower merges into the instance-side
Class → Behaviour → Object → ProtoObject chain. As a result,
Integer isKindOf: Object and Integer isKindOf: Class both return true.
Examples
42 isKindOf: Integer // => true
42 isKindOf: Object // => true
#foo isKindOf: Symbol // => true
#foo isKindOf: String // => false
Integer isKindOf: Number // => false (metaclass chain, not instance chain)
Integer isKindOf: Number class // => true (Number class is in the parallel chain)
Integer isKindOf: Object // => true (grounded — Object is reachable via the metaclass tower)
Integer isKindOf: Class // => true (Integer class inherits from Class)
Raise an error with the given message.
Examples
self error: "something went wrong"
From ProtoObject
Test value equality (Erlang ==).
Examples
42 == 42 // => true
"abc" == "abc" // => true
Test value inequality (negation of ==).
Examples
1 /= 2 // => true
42 /= 42 // => false
Return the class of the receiver.
Examples
42 class // => Integer
"hello" class // => String
Handle messages the receiver does not understand. Override for custom dispatch.
Examples
42 unknownMessage // => ERROR: does_not_understand
Send a message dynamically with an arguments list.
Examples
42 perform: #abs withArguments: #() // => 42
Execute a class method in the caller's process, bypassing gen_server dispatch.
The caller takes responsibility for knowing the method does not mutate class state. Useful for long-running class methods that would otherwise block the class object's gen_server.
Limitations: only resolves methods defined directly on the target class
module (does not walk the superclass chain). Class variables and self
are not available to the method (nil and #{} are passed).
Examples
MyClass performLocally: #run:ctx: withArguments: #(input, ctx)
Send a message dynamically with an arguments list and explicit timeout.
The timeout (in milliseconds or #infinity) applies to the gen_server:call
when the receiver is an actor. For value types, timeout is ignored.
Examples
actor perform: #query withArguments: #(sql) timeout: 30000