O operador de correspondência binária (~) pode ser aplicado a funções, mas o resultado da operação pode ser contra-intuitivo.
Duas funções correspondem apenas se e somente se suas definições forem idênticas .
Por exemplo:
f: {x * x}
f1: {[x]; x * x}
f2: {:x * x}
f3: {[a]; a * a}
f4: { x * x}
f ~ f1 / Result: 0b
f ~ f2 / Result: 0b
f ~ f3 / Result: 0b
f ~ f4 / Result: 0b
Em outras palavras, mesmo se os mapeamentos de E / S de duas funções forem iguais, a função de correspondência pode não retornar 1b.
Portanto, essencialmente, o resultado do operador de correspondência é o resultado da correspondência das strings subjacentes:
f ~ g
é equivalente a
(string f) ~ (string g)
Por outro lado, a operação de correspondência é uma boa maneira de verificar se duas expressões integradas são equivalentes:
(each[reverse]) ~ (reverse each) /Result: 1b