Impressum/Kontaktparent nodes: implemented functions

= Equal

testAplEqual

"http://www.microapl.co.uk/apl_help/ch_020_020_310.htm"

"Compares each element in the right-hand argument with the corresponding element in the left-hand argument and returns 1 if they are equal, 0 if they are not. (This operation is affected by the comparison tolerance NYI!!)"

"This function works on both numeric and character data. A numeric element is never considered equal to a character element."

| result table mable nestedVector result1 result2 resultVector |
self assert: aplTrue = (12 asApl aplEqual: 12).
self assert: aplTrue = (12 asApl aplEqual: 12 asApl).
self assert: aplFalse = (12 asApl aplEqual: 2).
self assert: aplFalse = (12 asApl aplEqual: 2 asApl).

"Compares character data"
self assert: aplTrue = ($Q asApl aplEqual: $Q).
self assert: aplTrue = ($Q asApl aplEqual: $Q asApl).

"Comparisons between numeric and character data are allowed, but always give 0"
self assert: aplFalse = (1 asApl aplEqual: $1).
self assert: aplFalse = (1 asApl aplEqual: $1 asApl).

"Compares each element in a vector with the corresponding element in a vector of equal length"
result := #( true false true false) asApl.
self assert: result = (#(11 7 2 9) asApl aplEqual: #(11 3 2 6)).
self assert: result = (#(11 7 2 9) asApl aplEqual: #(11 3 2 6) asApl).

result := #( false false false false true) asApl.
self assert: result = ('STOAT' asApl aplEqual: 'TOAST').
self assert: result = ('STOAT' asApl aplEqual: 'TOAST' asApl).

"The right argument is evaluated before the comparison is made.
NOTE: The smalltalk rules are evaluated here: - unary/binary before message:"

self assert: aplTrue = (8 asApl aplEqual:2+2+2+2).
self assert: aplTrue = (8 asApl aplEqual:2 asApl +2+2+2).

table := #(1 2 3 4 5 6) aplReshape:#(2 3).
mable := #(3 3 3 5 5 5) aplReshape:#(2 3).
result := (#(0 0 1 0 1 0) aplReshape:#(2 3)) asAplBoolean.

"Compares each element in a matrix with the corresponding element in a matrix of equal size and dimensions"
self assert: result = (table aplEqual: mable).

result := (#(0 0 1 0 0 0) aplReshape:#(2 3)) asAplBoolean.
self assert: result = (3 asApl aplEqual: table).

"in Apl this is TABLE MABLE, which can't be done like this in smalltalk"

nestedVector := (table aplEnclose, mable aplEnclose ) .
result1 := (#(0 0 1 0 0 0) aplReshape:#(2 3)) asAplBoolean.
result2 := (#(1 1 1 0 0 0) aplReshape:#(2 3)) asAplBoolean.
resultVector := (result1 aplEnclose, result2 aplEnclose ).

"Compares 3 with the elements of the nested vector"
self assert: resultVector = (3 asApl aplEqual: nestedVector).
self assert: resultVector = (nestedVector aplEqual:3).
"See also the aplMatch function which tests for depth, rank and shape equality as well."