validate ← { shape ← 5 2≡⍴⍵ ranks ← ∧/(⍳13)∊⍨⊣/⍵ suits ← ∧/(⍳4)∊⍨⊢/⍵ unique← ⍵≡∪⍵ shape ∧ ranks ∧ suits ∧ unique } |
validate ← { shape ← (5 2≡⍴)⍵ ranks ← (∧/(⍳13)∊⍨⊣/)⍵ suits ← (∧/(⍳4)∊⍨⊢/)⍵ unique← (⊢≡∪)⍵ shape ∧ ranks ∧ suits ∧ unique } validate ← { shape ← 5 2≡⍴ ranks ← ∧/(⍳13)∊⍨⊣/ suits ← ∧/(⍳4)∊⍨⊢/ unique← ⊢≡∪ (shape ∧ ranks ∧ suits ∧ unique)⍵ } shape ← 5 2≡⍴ ranks ← ∧/(⍳13)∊⍨⊣/ suits ← ∧/(⍳4)∊⍨⊢/ unique← ⊢≡∪ validate ← shape∧ranks∧suits∧unique |
In a fully explicit function the arguments are named in each step. In tacit programming argument names are treated as background context and removed from the code.
The further the code is from its context the harder it will be to understand.
validate ← (5 2≡⍴) ∧ (∧/(⍳13)∊⍨⊣/) ∧ (∧/(⍳4)∊⍨⊢/) ∧ (⊢≡∪)