ブール型

ブール型としては、単項動詞として使った場合、左側の引数がゼロの場合と同等。つまり、
m b. y ↔ 0 m b.y
となる。

二項動詞の場合:
二項動詞fを、d=:0 1について、d f/ d(または f/~ d)とすると、すべての場合について

を示す2x2のテーブルが作成される。or, nor, and, not-andについて下記のようになる。

   (+./~ ; +:/~ ; *./~ ; *:/~) d=: 0 1
 +---+---+---+---+
 |0 1|1 0|0 0|1 1|
 |1 1|0 0|0 1|1 0|
 +---+---+---+---+

これは+.(プラスドット)はorの意味なので、両方ともゼロの場合以外はすべて真というように読

みます。+:(プラスコロン)がnorで*.(かけるカンマ、アスタリスクカンマ)がand、*:(かけるコロ

ン、アスタリスクコロン)がnot-andです。
この0111とかを2進法とみなして、7 b.(ななビーカンマ)とすると、+.(プラスドット)と同じ意味

になり、ブール型計算に使えるという話と理解しました。

  0 0 1 0  (7 b.) 1 0 1 1   NB.+.(プラスドット、アンド)と同じ結果になる
1 0 1 1
   0 0 1 0  +. 1 0 1 1   NB.確認
1 0 1 1

これにより、2の4乗の16種類のブール型演算子を得たことになります。
マイナスもつかえるし配列も可能。
16を足したたとえば17 b.はビット演算のandとなる。
また32 b.はローテート、33 b.はシフト、34 b.は符号付シフトを表す。

   (7 b./~ ; 8 b./~ ; 1 b./~ ; 14 b./~) d=: 0 1   NB.or, nor, and, not-andの例
 +---+---+---+---+
 |0 1|1 0|0 0|1 1|
 |1 1|0 0|0 1|1 0|
 +---+---+---+---+
   (_1 b./~ ; _3 b./~ ; _15 b./~) d   NB. negative indexing
 +---+---+---+
 |1 1|1 1|0 0|
 |1 1|0 1|0 1|
 +---+---+---+
   (<"2) 2 0 1 |: 7 8 1 15 b./~ d   NB. array arguments
 +---+---+---+---+
 |0 1|1 0|0 0|1 1|
 |1 1|0 0|0 1|1 1|
 +---+---+---+---+
   12345 (17 b.) 67890   NB. bitwise and
48
   f=: (32#2)&#: { '.x'"_
   f 12345 67890 48
..................xx......xxx..x
...............x....x..x..xx..x.
..........................xx....
   _12345 (23 b.) 67890   NB. bitwise or
_12297
   f _12345 67890 _12297
xxxxxxxxxxxxxxxxxx..xxxxxx...xxx
...............x....x..x..xx..x.
xxxxxxxxxxxxxxxxxx..xxxxxxxx.xxx

   20 b./~ i.10   NB. bitwise less than table
0 1 2 3 4 5 6 7 8 9
0 0 2 2 4 4 6 6 8 8
0 1 0 1 4 5 4 5 8 9
0 0 0 0 4 4 4 4 8 8
0 1 2 3 0 1 2 3 8 9
0 0 2 2 0 0 2 2 8 8
0 1 0 1 0 1 0 1 8 9
0 0 0 0 0 0 0 0 8 8
0 1 2 3 4 5 6 7 0 1
0 0 2 2 4 4 6 6 0 0
   23 b./\ 2^i.10   NB. cumulative 

bitwise or
1 3 7 15 31 63 127 255 511 1023
   _5 (33 b.) 12345   NB. shift
385
   f 12345 385   
..................xx......xxx..x
.......................xx......x
   _5 (33 b.) _12345   NB. shift
134217342
   f _12345 134217342
xxxxxxxxxxxxxxxxxx..xxxxxx...xxx
.....xxxxxxxxxxxxxxxxxx..xxxxxx.
   _5 (34 b.) _12345   NB. signed shift
_386
   f _12345 _386
xxxxxxxxxxxxxxxxxx..xxxxxx...xxx
xxxxxxxxxxxxxxxxxxxxxxx..xxxxxx.