Moritz Lenz wrote: > Ruud H.G. van Tol wrote: >> I wonder if there is place for a "decision operator". >> (search terms: FPGA, evolvable hardware, Xilinx, PLB, LUT, NESW) >> >> >> dop:| 0 1 2 3 4 5 6 7 8 9 A B C D E F >> ----+-------------------------------- >> 0 0 | 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 >> 0 1 | 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 >> 1 0 | 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 >> 1 1 | 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 >> >> >> So for two boolean inputs, >> "&" is an alias of dop(1), >> "|" is an alias of dop(0x07), >> "^" is an alias of dop(0b0110). >> >> (1,0).dop(7) returns 1 because (1 | 0) == 1 >> >> (4,3).dop(7) returns 7 because (4 | 3) == 7 >> >> ("A","F").dop(7) returns "G" because ("A" | "F") eq "G" >> >> (1,1,1).dop(0b01101001) returns 1 because (1^1^1) == 1 > > This looks like a perfect place for a (possibly user defined) operator > with an attribute, something like
s/attribute/adverb/ actually > 1 ~~ 0 :dop(7) ... and maybe not with the smartmatch operator, because it's already taken, and jnthn++ reminded me that named parameters don't participate in dispatch. Cheers, Moritz