Character

Inherits from Integer
Sealed

Character — Unicode character (codepoint) wrapper.

Characters in Beamtalk are integers (Unicode codepoints) at the BEAM level. The Character class provides OOP methods for working with individual characters.

Examples

$A class                 // => Character
$A asInteger             // => 65
$a isLetter              // => true

Class Methods

value: codepoint Sealed source

Create a Character from a Unicode codepoint integer (class method).

Examples

Character value: 65      // => $A

Instance Methods

=:= other source

Test strict equality with another character.

Examples

$A =:= $A                  // => true
$A =:= $B                  // => false
=/= other source

Test strict inequality with another character.

Examples

$A =/= $B                  // => true
$A =/= $A                  // => false
/= other source

Test inequality with another character.

Examples

$A /= $B                 // => true
$A /= $A                 // => false
< other source

Test if the receiver sorts before another character.

Examples

$A < $B                  // => true
> other source

Test if the receiver sorts after another character.

Examples

$B > $A                  // => true
<= other source

Test if the receiver sorts before or equal to another character.

Examples

$A <= $A                 // => true
>= other source

Test if the receiver sorts after or equal to another character.

Examples

$A >= $A                 // => true
asInteger source

Return the Unicode codepoint as an integer.

Examples

$A asInteger             // => 65
asString source

Convert the character to a single-character string.

Examples

$A asString              // => "A"
printString source

Return a developer-readable string representation.

Examples

$A printString           // => "$A"
hash source

Return a hash value for the character.

Examples

$A hash
isLetter source

Test if the character is a Unicode letter.

Examples

$a isLetter              // => true
$1 isLetter              // => false
isDigit source

Test if the character is a Unicode digit.

Examples

$1 isDigit               // => true
$a isDigit               // => false
isUppercase source

Test if the character is uppercase.

Examples

$A isUppercase           // => true
$a isUppercase           // => false
isLowercase source

Test if the character is lowercase.

Examples

$a isLowercase           // => true
$A isLowercase           // => false
isWhitespace source

Test if the character is whitespace.

Examples

$  isWhitespace          // => true
$a isWhitespace          // => false
uppercase source

Convert to uppercase.

Examples

$a uppercase             // => $A
lowercase source

Convert to lowercase.

Examples

$A lowercase             // => $a

Inherited Methods

From Integer

+ other

Add an integer to the receiver.

Examples

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

Subtract an integer from the receiver.

Examples

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

Multiply the receiver by an integer.

Examples

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

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

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

Remainder after integer division.

Examples

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

Raise the receiver to a power.

Examples

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

Test strict equality with another integer.

Examples

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

Test strict inequality with another integer.

Examples

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

Test inequality with another integer.

Examples

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

Test if the receiver is less than another integer.

Examples

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

Test if the receiver is greater than another integer.

Examples

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

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

Examples

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

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

Examples

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

Negate the receiver.

Examples

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

Absolute value of the receiver.

Examples

-42 abs       // => 42
7 abs         // => 7
rounded

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
ceiling

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
floor

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
truncated

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
isEven

Test if the receiver is even.

Examples

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

Test if the receiver is odd.

Examples

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

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.

max: other

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.

timesRepeat: block

Evaluate block the receiver number of times.

Examples

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

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

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

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

Examples

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

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

Convert the receiver to a Float.

Examples

42 asFloat    // => 42.0
asString

Convert the receiver to its String representation.

Examples

42 asString   // => "42"
printString

Return a developer-readable string representation.

Examples

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

Bitwise AND with another integer.

Examples

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

Bitwise OR with another integer.

Examples

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

Bitwise XOR with another integer.

Examples

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

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

Examples

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

Bitwise complement of the receiver.

Examples

0 bitNot        // => -1
factorial

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

Examples

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

Greatest common divisor of the receiver and other.

Examples

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

Least common multiple of the receiver and other.

Examples

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

Test if the codepoint is a Unicode letter.

Examples

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

Test if the codepoint is a Unicode digit.

Examples

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

Test if the codepoint is an uppercase letter.

Examples

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

Test if the codepoint is a lowercase letter.

Examples

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

Test if the codepoint is a whitespace character.

Examples

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

Square root of the receiver (returns Float).

Examples

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

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

Examples

1 log             // => 0.0
ln

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

Examples

1 ln              // => 0.0
log2

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

Examples

8 log2            // => 3.0
log10

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

Examples

100 log10         // => 2.0
exp

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

Examples

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

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

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.

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