# !?|⌈⌊⊥⊤⊣⊢#

## Factorial, binomial !#

Monadic ! is factorial. Note that it goes on the left (like all other monadic APL functions) as opposed to mathematics’ $$!$$.

Dyadic A!B is binomial. It is the number of ways to take A items from a bag of B items, generalised to be the binomial function.

!12         ⍝ 12 factorial
2!8         ⍝ how many ways can we select 2 from 8?

479001600

28


## Roll, deal ?#

Monadic ?B is roll. It returns a random integer among the first B integers. ?0 returns a random float between (but not including) 0 and 1:

?6 6 6     ⍝ roll three six-sided dice
?0         ⍝ random float between 0-1, excluding 0 and 1

4 3 4

0.3205466592


Dyadic A?B is deal. It returns a random one of the ways A!B counted. I.e. it returns A random numbers among the B first integers.

10?10       ⍝ 1-10 in random order

1 6 9 2 4 7 8 3 5 10


Note that it deals from the set ⍳B, so it’s dependent on your ⎕IO setting:

10?10 ⊣ ⎕IO←0     ⍝ Now we should get 0-9
⎕IO←1             ⍝ Reset ⎕IO to default

8 0 3 6 5 2 7 9 4 1


## Magnitude, residue |#

Monadic | is magnitude, also called the absolute value, $$|x|$$:

|¯97
|3 5 ¯7 ¯8 7 ¯2

97

3 5 7 8 7 2


Dyadic A|B is residue, also known as the division remainder (“mod”) when B is divided by A. Note the reversed order of arguments. “normal” mod is |⍨.

2|⍳10     ⍝ odd numbers in 1-10

1 0 1 0 1 0 1 0 1 0


## Ceiling, maximum ⌈#

Monadic ⌈ is ceiling, $$⌈x⌉$$,

⌈3.14159256

4


Dyadic A⌈B is maximum:

15⌈23

23


## Floor, minimum ⌊#

Monadic ⌊ is floor, and the dyadic is minimum,

⌊3.14159256
15⌊23

3

15


## Decode ⊥#

A⊥B is decode. It evaluates digits B as (mixed) base A, e.g,

2⊥1 0 1 0 1 0   ⍝ decode binary to decimal

42


## Encode ⊤#

A⊤B, or encode, is the inverse of ⊥, turning B into a list(s) of digits in (mixed) base A,

24 60 60⊤10000  ⍝ seconds to hour, minutes, seconds

2 46 40


Ten thousand seconds is the same as 2 hours, 46 minutes and 40 seconds.

## Left, right ⊣⊢#

Dyadic ⊣ is the left argument unmodified. Monadically, it just returns its sole argument. Dyadic ⊢ is the right argument unmodified. Monadically, it just returns its sole argument.