J: creating a family of verbs from an array

The following expression shows the truth table for each of the 16 primitive Boolean operations:

   (0 b./; 1 b./; 2 b./; 3 b./; 4 b./; 5 b./; 6 b./; 7 b./; 8 b./; 9 b./; 10 b./; 11 b./; 12 b./; 13 b./; 14 b./; 15 b./) ~ i.2
β”Œβ”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”
β”‚0 0β”‚0 0β”‚0 0β”‚0 0β”‚0 1β”‚0 1β”‚0 1β”‚0 1β”‚1 0β”‚1 0β”‚1 0β”‚1 0β”‚1 1β”‚1 1β”‚1 1β”‚1 1β”‚
β”‚0 0β”‚0 1β”‚1 0β”‚1 1β”‚0 0β”‚0 1β”‚1 0β”‚1 1β”‚0 0β”‚0 1β”‚1 0β”‚1 1β”‚0 0β”‚0 1β”‚1 0β”‚1 1β”‚
β””β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”˜

How can I reorganize a part in parentheses to remove duplication?

lightening

The goal here is not to create a table, but to learn how to generate new verbs dynamically. To reduce the expression in brackets, I would like to separate the characters ;, /and b., and then replace the numbers with i.10.

The symbol is ;quite simple:

   ;/i.16
β”Œβ”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”€β”¬β”€β”€β”¬β”€β”€β”¬β”€β”€β”¬β”€β”€β”¬β”€β”€β”
β”‚0β”‚1β”‚2β”‚3β”‚4β”‚5β”‚6β”‚7β”‚8β”‚9β”‚10β”‚11β”‚12β”‚13β”‚14β”‚15β”‚
β””β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”€β”΄β”€β”€β”΄β”€β”€β”΄β”€β”€β”΄β”€β”€β”΄β”€β”€β”˜

But it’s hard for me to find a way to create a new verb from each element in the list.

I think maybe I'm looking for some kind of higher-order processors, which allow you to use &and @with something other than the constant.

, nn leftBondEach v n0 & v; n1 & v; ... ; nn & v:

   bverbs =: (i.16)(leftBondEach)b. NB. would mean (0 b.; 1 b.; ...; 15 b.)
   0 bverbs 0
β”Œβ”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”
β”‚0β”‚0β”‚0β”‚0β”‚0β”‚0β”‚0β”‚0β”‚1β”‚1β”‚1β”‚1β”‚1β”‚1β”‚1β”‚1β”‚
β””β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”˜
   0 bverbs 1
β”Œβ”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”
β”‚0β”‚0β”‚0β”‚0β”‚1β”‚1β”‚1β”‚1β”‚0β”‚0β”‚0β”‚0β”‚1β”‚1β”‚1β”‚1β”‚
β””β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”˜

, - , / .

, J, , , , .:)

+4
2

:

<"2@|:@( (i.16) b./~) 0 1

    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
    |0 0|0 0|0 1|0 1|0 0|0 0|0 1|0 1|1 0|1 0|1 1|1 1|1 0|1 0|1 1|1 1|
    |0 0|0 1|0 0|0 1|1 0|1 1|1 0|1 1|0 0|0 1|0 0|0 1|1 0|1 1|1 0|1 1|
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

, $ (i. 16) b. /~ 0 1 - 2 2 16, 16 22...

+5

, , :

(3 :'y b./ ~ i.2') each i.16

1. - f =: 4 :';/x b. y', :

(i.16) f 0
β”Œβ”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”
β”‚0β”‚0β”‚0β”‚0β”‚0β”‚0β”‚0β”‚0β”‚1β”‚1β”‚1β”‚1β”‚1β”‚1β”‚1β”‚1β”‚
β””β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”˜
(i.16) f 1
β”Œβ”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”
β”‚0β”‚0β”‚0β”‚0β”‚1β”‚1β”‚1β”‚1β”‚0β”‚0β”‚0β”‚0β”‚1β”‚1β”‚1β”‚1β”‚
β””β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”˜

2. "" ;/ (i.16) b. At (@):

f =: ;/@((i.16) b.)
f 0
β”Œβ”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”
β”‚0β”‚0β”‚0β”‚0β”‚0β”‚0β”‚0β”‚0β”‚1β”‚1β”‚1β”‚1β”‚1β”‚1β”‚1β”‚1β”‚
β””β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”˜
f 1
β”Œβ”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”
β”‚0β”‚0β”‚0β”‚0β”‚1β”‚1β”‚1β”‚1β”‚0β”‚0β”‚0β”‚0β”‚1β”‚1β”‚1β”‚1β”‚
β””β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”˜

3. , leftBondEach , :

leftBondEach =: 2 :';/m v y'   
h =: 2 leftBondEach +             NB. equiv. to h =: ;/@(2&+)
h 3 4 5
β”Œβ”€β”¬β”€β”¬β”€β”
β”‚5β”‚6β”‚7β”‚
β””β”€β”΄β”€β”΄β”€β”˜
h =: 0 leftBondEach ((i.16) b.)
h 0
β”Œβ”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”
β”‚0β”‚0β”‚0β”‚0β”‚0β”‚0β”‚0β”‚0β”‚1β”‚1β”‚1β”‚1β”‚1β”‚1β”‚1β”‚1β”‚
β””β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”˜
h 1
β”Œβ”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”
β”‚0β”‚0β”‚0β”‚0β”‚1β”‚1β”‚1β”‚1β”‚0β”‚0β”‚0β”‚0β”‚1β”‚1β”‚1β”‚1β”‚
β””β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”˜

4. .. , jpjacobs ..

+2

All Articles