Integer

Inherits from Number
Sealed

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

Instance Methods

+ other source

Add an integer to the receiver.

Examples

3 + 4         // => 7
-1 + 1        // => 0
- other source

Subtract an integer from the receiver.

Examples

10 - 3        // => 7
0 - 5         // => -5
* other source

Multiply the receiver by an integer.

Examples

6 * 7         // => 42
-3 * 4        // => -12
/ other source

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
div: other source

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
% other source

Remainder after integer division.

Examples

17 % 5        // => 2
10 % 3        // => 1
** other source

Raise the receiver to a power.

Examples

2 ** 10       // => 1024
3 ** 3        // => 27
=:= other source

Test strict equality with another integer.

Examples

42 =:= 42       // => true
1 =:= 2         // => false
=/= other source

Test strict inequality with another integer.

Examples

1 =/= 2         // => true
42 =/= 42       // => false
/= other source

Test inequality with another integer.

Examples

1 /= 2        // => true
42 /= 42      // => false
< other source

Test if the receiver is less than another integer.

Examples

1 < 2         // => true
5 < 3         // => false
> other source

Test if the receiver is greater than another integer.

Examples

5 > 3         // => true
1 > 2         // => false
<= other source

Test if the receiver is less than or equal to another integer.

Examples

1 <= 2        // => true
3 <= 3        // => true
>= other source

Test if the receiver is greater than or equal to another integer.

Examples

5 >= 3        // => true
3 >= 3        // => true
negated source

Negate the receiver.

Examples

5 negated     // => -5
-3 negated    // => 3
abs source

Absolute value of the receiver.

Examples

-42 abs       // => 42
7 abs         // => 7
isEven source

Test if the receiver is even.

Examples

4 isEven      // => true
7 isEven      // => false
isOdd source

Test if the receiver is odd.

Examples

7 isOdd       // => true
4 isOdd       // => false
min: other source

Return the smaller of the receiver and other.

Examples

3 min: 7      // => 3
10 min: 2     // => 2
max: other source

Return the larger of the receiver and other.

Examples

3 max: 7      // => 7
10 max: 2     // => 10
timesRepeat: block source

Evaluate block the receiver number of times.

Examples

3 timesRepeat: [Transcript show: "hi"]
to: end do: block source

Iterate from the receiver to end, evaluating block with each value.

Examples

1 to: 3 do: [:i | Transcript show: i]
to: end by: step do: block source

Iterate from the receiver to end by step, evaluating block with each value.

Examples

1 to: 10 by: 3 do: [:i | Transcript show: i]
to: stop source

Return an Interval from the receiver to stop with step 1.

Examples

1 to: 10   // => (1 to: 10)
to: stop by: step source

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)
asFloat source

Convert the receiver to a Float.

Examples

42 asFloat    // => 42.0
asString source

Convert the receiver to its String representation.

Examples

42 asString   // => "42"
printString source

Return a developer-readable string representation.

Examples

42 printString  // => "42"
bitAnd: other source

Bitwise AND with another integer.

Examples

12 bitAnd: 10   // => 8
bitOr: other source

Bitwise OR with another integer.

Examples

12 bitOr: 10    // => 14
bitXor: other source

Bitwise XOR with another integer.

Examples

12 bitXor: 10   // => 6
bitShift: n source

Bit shift the receiver by n positions. Positive shifts left, negative shifts right.

Examples

1 bitShift: 4   // => 16
16 bitShift: -2 // => 4
bitNot source

Bitwise complement of the receiver.

Examples

0 bitNot        // => -1
factorial source

Factorial of the receiver. Raises an error for negative integers.

Examples

5 factorial     // => 120
0 factorial     // => 1
gcd: other source

Greatest common divisor of the receiver and other.

Examples

12 gcd: 8       // => 4
7 gcd: 5        // => 1
lcm: other source

Least common multiple of the receiver and other.

Examples

4 lcm: 6        // => 12
3 lcm: 5        // => 15
isLetter source

Test if the codepoint is a Unicode letter.

Examples

65 isLetter     // => true
48 isLetter     // => false
isDigit source

Test if the codepoint is a Unicode digit.

Examples

48 isDigit      // => true
65 isDigit      // => false
isUppercase source

Test if the codepoint is an uppercase letter.

Examples

65 isUppercase  // => true
97 isUppercase  // => false
isLowercase source

Test if the codepoint is a lowercase letter.

Examples

97 isLowercase  // => true
65 isLowercase  // => false
isWhitespace source

Test if the codepoint is a whitespace character.

Examples

32 isWhitespace // => true
65 isWhitespace // => false
sqrt source

Square root of the receiver (returns Float).

Examples

16 sqrt           // => 4.0
2 sqrt            // => 1.4142135623730951
log source

Natural logarithm (base e) of the receiver (returns Float).

Examples

1 log             // => 0.0
ln source

Natural logarithm (base e) of the receiver. Alias for log.

Examples

1 ln              // => 0.0
log2 source

Base-2 logarithm of the receiver (returns Float).

Examples

8 log2            // => 3.0
log10 source

Base-10 logarithm of the receiver (returns Float).

Examples

100 log10         // => 2.0
exp source

Euler's number (e) raised to the power of the receiver (returns Float).

Examples

0 exp             // => 1.0
1 exp             // => 2.718281828459045
raisedTo: exponent source

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

=:= _other

Strict equality comparison.

=/= _other

Strict inequality comparison.

< _other

Less than.

> _other

Greater than.

<= _other

Less than or equal.

>= _other

Greater than or equal.

isZero

Test if the receiver is zero.

Examples

0 isZero          // => true
5 isZero          // => false
isPositive

Test if the receiver is positive (greater than zero).

Examples

5 isPositive      // => true
-3 isPositive     // => false
0 isPositive      // => false
isNegative

Test if the receiver is negative (less than zero).

Examples

-3 isNegative     // => true
5 isNegative      // => false
sign

Return 1 for positive, -1 for negative, 0 for zero.

Examples

42 sign           // => 1
-7 sign           // => -1
0 sign            // => 0
between: min and: max

Test if the receiver is between min and max (inclusive).

Examples

5 between: 1 and: 10   // => true
15 between: 1 and: 10  // => false
inspect

Override inspect to use printString rather than the field-based format defined in Value. Numbers are primitives, not map-based value objects.

From Value

inspect

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

class

Return the class of the receiver.

Examples

42 class              // => Integer
"hello" class         // => String
isNil

Test if the receiver is nil. Returns false for all objects except nil.

Examples

42 isNil              // => false
nil isNil             // => true
notNil

Test if the receiver is not nil. Returns true for all objects except nil.

Examples

42 notNil             // => true
nil notNil            // => false
ifNil: _nilBlock

If the receiver is nil, evaluate nilBlock. Otherwise return self.

Examples

42 ifNil: [0]         // => 42
nil ifNil: [0]        // => 0
ifNotNil: notNilBlock

If the receiver is not nil, evaluate notNilBlock with self.

Examples

42 ifNotNil: [:v | v + 1]   // => 43
nil ifNotNil: [:v | v + 1]  // => nil
ifNil: _nilBlock ifNotNil: notNilBlock

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
ifNotNil: notNilBlock ifNil: _nilBlock

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
printString

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"
displayString

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

Inspect the receiver.

Examples

42 inspect             // => "42"
yourself Sealed

Return the receiver itself. Useful for cascading side effects.

Examples

42 yourself            // => 42
hash

Return a hash value for the receiver.

Examples

42 hash
respondsTo: selector Sealed

Test if the receiver responds to the given selector.

Examples

42 respondsTo: #abs    // => true
fieldNames Sealed

Return the names of fields.

Examples

42 fieldNames             // => #()
fieldAt: name Sealed

Return the value of the named field.

Examples

object fieldAt: #name
fieldAt: name put: value Sealed

Set the value of the named field (returns new state).

Examples

object fieldAt: #name put: "Alice"
perform: selector Sealed

Send a unary message dynamically.

Examples

42 perform: #abs       // => 42
perform: selector withArguments: args Sealed

Send a message dynamically with arguments.

Examples

3 perform: #max: withArguments: #(5)   // => 5
subclassResponsibility

Raise an error indicating this method must be overridden by a subclass.

Examples

self subclassResponsibility
notImplemented

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
show: aValue

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: "
showCr: aValue

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"
isKindOf: aClass

Test if the receiver is an instance of aClass or any of its subclasses.

Examples

42 isKindOf: Integer    // => true
42 isKindOf: Object     // => true
#foo isKindOf: Symbol   // => true
#foo isKindOf: String   // => false
error: message

Raise an error with the given message.

Examples

self error: "something went wrong"

From ProtoObject

== other

Test value equality (Erlang ==).

Examples

42 == 42           // => true
"abc" == "abc"     // => true
/= other

Test value inequality (negation of ==).

Examples

1 /= 2             // => true
42 /= 42           // => false
class

Return the class of the receiver.

Examples

42 class            // => Integer
"hello" class       // => String
doesNotUnderstand: selector args: arguments

Handle messages the receiver does not understand. Override for custom dispatch.

Examples

42 unknownMessage   // => ERROR: does_not_understand
perform: selector withArguments: arguments

Send a message dynamically with an arguments list.

Examples

42 perform: #abs withArguments: #()   // => 42
performLocally: selector withArguments: arguments

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)
perform: selector withArguments: arguments timeout: timeoutMs

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