# scalar - S list - L array - A
# hash - H sub (CV) - C file - F
# socket - Fs filetest - F- filetest_access - F-+
-# num-compare - S< dirhandle - DF
+# num-compare - S< dirhandle - DF infix bitwise - S|
# reference - R
# "?" denotes an optional operand.
padhv private hash ck_null d0
padany private value ck_null d0
-pushre push regexp ck_null d/
-
# References and stuff.
rv2gv ref-to-glob cast ck_rvconst ds1
transr transliteration (tr///) ck_match is" S
# Lvalue operators.
-# sassign is special-cased for op class
-sassign scalar assignment ck_sassign s0
+sassign scalar assignment ck_sassign s2 S S
aassign list assignment ck_null t2 L L
chop chop ck_spair mts% L
i_divide integer division (/) ck_null ifsT2 S S
modulo modulus (%) ck_null IifsT2 S S
i_modulo integer modulus (%) ck_null ifsT2 S S
-repeat repeat (x) ck_repeat fmT2 L S
+repeat repeat (x) ck_repeat fmt2 L S
add addition (+) ck_null IfsT2 S S
i_add integer addition (+) ck_null ifsT2 S S
subtract subtraction (-) ck_null IfsT2 S S
i_subtract integer subtraction (-) ck_null ifsT2 S S
concat concatenation (.) or string ck_concat fsT2 S S
+multiconcat concatenation (.) or string ck_null sT+
stringify string ck_stringify fsT@ S
left_shift left bitshift (<<) ck_bitop fsT2 S S
i_le integer le (<=) ck_cmp ifs2 S S<
ge numeric ge (>=) ck_cmp Iifs2 S S<
i_ge integer ge (>=) ck_cmp ifs2 S S<
-eq numeric eq (==) ck_null Iifs2 S S<
-i_eq integer eq (==) ck_null ifs2 S S<
-ne numeric ne (!=) ck_null Iifs2 S S<
-i_ne integer ne (!=) ck_null ifs2 S S<
+eq numeric eq (==) ck_cmp Iifs2 S S<
+i_eq integer eq (==) ck_cmp ifs2 S S<
+ne numeric ne (!=) ck_cmp Iifs2 S S<
+i_ne integer ne (!=) ck_cmp ifs2 S S<
ncmp numeric comparison (<=>) ck_null Iifst2 S S<
-i_ncmp integer comparison (<=>) ck_null ifsT2 S S<
+i_ncmp integer comparison (<=>) ck_null ifst2 S S<
slt string lt ck_null ifs2 S S
sgt string gt ck_null ifs2 S S
sge string ge ck_null ifs2 S S
seq string eq ck_null ifs2 S S
sne string ne ck_null ifs2 S S
-scmp string comparison (cmp) ck_null ifsT2 S S
-
-bit_and bitwise and (&) ck_bitop fst2 S S
-bit_xor bitwise xor (^) ck_bitop fst2 S S
-bit_or bitwise or (|) ck_bitop fst2 S S
+scmp string comparison (cmp) ck_null ifst2 S S
+
+bit_and bitwise and (&) ck_bitop fst2 S S|
+bit_xor bitwise xor (^) ck_bitop fst2 S S|
+bit_or bitwise or (|) ck_bitop fst2 S S|
+nbit_and numeric bitwise and (&) ck_bitop fsT2 S S|
+nbit_xor numeric bitwise xor (^) ck_bitop fsT2 S S|
+nbit_or numeric bitwise or (|) ck_bitop fsT2 S S|
+sbit_and string bitwise and (&.) ck_bitop fst2 S S|
+sbit_xor string bitwise xor (^.) ck_bitop fst2 S S|
+sbit_or string bitwise or (|.) ck_bitop fst2 S S|
negate negation (-) ck_null Ifst1 S
i_negate integer negation (-) ck_null ifst1 S
not not ck_null ifs1 S
complement 1's complement (~) ck_bitop fst1 S
+ncomplement numeric 1's complement (~) ck_bitop fsT1 S
+# scomplement uses ck_bitop only for the experimental warning. Once the
+# warning is gone, this can change to ck_null.
+scomplement string 1's complement (~) ck_bitop fsT1 S
-smartmatch smart match ck_smartmatch s2
+smartmatch smart match ck_null ifs2 S S
# High falutin' math.
length length ck_length ifsTu% S?
substr substr ck_substr st@ S S S? S?
-vec vec ck_fun isT@ S S S
+vec vec ck_fun ist@ S S S
index index ck_index isT@ S S S?
rindex rindex ck_index isT@ S S S?
kvaslice index/value array slice ck_null m@ A L
aeach each on array ck_each d% A
-akeys keys on array ck_each t% A
avalues values on array ck_each dt% A
+akeys keys on array ck_each t% A
# Hashes.
keys keys ck_each t% H
delete delete ck_delete % S
exists exists ck_exists is% S
-rv2hv hash dereference ck_rvconst d1
+rv2hv hash dereference ck_rvconst dt1
helem hash element ck_null s2 H S
hslice hash slice ck_null m@ H L
kvhslice key/value hash slice ck_null m@ H L
unpack unpack ck_fun u@ S S?
pack pack ck_fun fmst@ S L
-split split ck_split T@ S S S
+split split ck_split t/ S S S
join join or string ck_join fmst@ S L
# List operators.
orassign logical or assignment (||=) ck_null s|
dorassign defined or assignment (//=) ck_null s|
-method method lookup ck_method d.
entersub subroutine entry ck_subr dm1 L
leavesub subroutine exit ck_null 1
leavesublv lvalue subroutine return ck_null 1
+argcheck check subroutine arguments ck_null +
+argelem subroutine argument ck_null +
+argdefelem subroutine argument default value ck_null |
caller caller ck_fun t% S?
warn warn ck_fun imst@ L
die die ck_fun imst@ L
dump dump ck_null ds}
goto goto ck_null s}
exit exit ck_fun s% S?
+method method lookup ck_method d.
method_named method with known name ck_null d.
method_super super with known name ck_null d.
method_redir redirect method with known name ck_null d.
method_redir_super redirect super method with known name ck_null d.
-entergiven given() ck_null d|
+entergiven given() ck_null d{
leavegiven leave given block ck_null 1
enterwhen when() ck_null d|
leavewhen leave when block ck_null 1
custom unknown custom operator ck_null 0
-# For smart dereference for each/keys/values
-reach each on reference ck_each d% S
-rkeys keys on reference ck_each t% S
-rvalues values on reference ck_each dt% S
-
# For CORE:: subs
coreargs CORE:: subroutine ck_null $
+avhvswitch Array/hash switch ck_null t1
runcv __SUB__ ck_null s0
lvref lvalue ref assignment ck_null d%
lvrefslice lvalue ref assignment ck_null d@
lvavref lvalue array reference ck_null d%
+anonconst anonymous constant ck_null ds1