3
edits
mNo edit summary |
(added cute example of monadic 4-train parsing and evaluation) |
||
Line 118: | Line 118: | ||
0 0 2 | 0 0 2 | ||
</source> | </source> | ||
For a more parallel comparison of the notations, see the [[Comparison_with_traditional_mathematics#Practical_example|comparison with traditional mathematics]]. | For a more parallel comparison of the notations, see the [[Comparison_with_traditional_mathematics#Practical_example|comparison with traditional mathematics]]. | ||
===The Number of the Beast=== | |||
The following expression for computing the [https://en.wikipedia.org/wiki/666_(number) Number of the Beast] nicely illustrates how to read a train. | |||
<source lang=apl> | |||
((+.×⍨⊢~∘.×⍨)1↓⍳)17 ⍝ Accursed train | |||
666 | |||
</source> | |||
First, <source lang=apl inline>((+.×⍨⊢~∘.×)1↓⍳)</source> is supplied with only one argument <source lang=apl inline>17</source> and is thus interpreted monadically. | |||
Second, <source lang=apl inline>(+.×⍨⊢~∘.×⍨)1↓⍳</source> is a 4-train: reading right-to-left, the last 3 components are interpreted as the fork <source lang=apl inline>1↓i</source> and the 4-train is interpreted as the atop <source lang=apl inline>(+.×⍨⊢~∘.×⍨)(1↓⍳)</source>. | |||
Similarly, <source lang=apl inline>(+.×⍨⊢~∘.×⍨)</source> is also a 4-train and interpreted as the atop <source lang=apl inline>+.×⍨(⊢~∘.×⍨)</source>. | |||
Thus the accursed train is interpreted as <source lang=apl inline>((+.×⍨(⊢~∘.×⍨))(1↓⍳))17</source>. Having read the train, we now evaluate it monadically. | |||
<source lang=apl> | |||
((+.×⍨(⊢~∘.×⍨))(1↓⍳))17 ⍝ Accursed train as an atop over a fork atop a fork | |||
+.×⍨(⊢~∘.×⍨)1↓⍳17 ⍝ Atop evalution | |||
+.×⍨(⊢1↓⍳17)~∘.×⍨1↓⍳17 ⍝ Fork evalution | |||
+.×⍨(1↓⍳17)~∘.×⍨1↓⍳17 ⍝ ⊢ evaluation | |||
+.×⍨2 3 5 7 11 13 15 17 ⍝ numbers 2 through 17 without those appearing in their multiplication table are primes | |||
666 ⍝ the sum of the squares of the primes up to 17 | |||
</source> | |||
Note that <source lang=apl inline>((⊢⍨∘.×⍨)1↓⍳)</source> is a train computing primes up to the given input. | |||
A more satisfying variation of the accursed train is the following. | |||
<source lang=apl> | |||
(⍎⊢,⍕∘≢)'((+.×⍨⊢~∘.×⍨)1↓⍳)' ⍝ Accursed train 2.0 | |||
⍎(⊢,⍕∘≢)'((+.×⍨⊢~∘.×⍨)1↓⍳)' ⍝ 4-train intepreted as an atop | |||
⍎(⊢'((+.×⍨⊢~∘.×⍨)1↓⍳)'),⍕∘≢'((+.×⍨⊢~∘.×⍨)1↓⍳)' ⍝ fork evaluation | |||
⍎'((+.×⍨⊢~∘.×⍨)1↓⍳)','17' ⍝ ⊢ evaluation and ⍕∘≢ evaluation | |||
⍎'((+.×⍨⊢~∘.×⍨)1↓⍳)17' ⍝ , evaluation | |||
666 ⍝ ⍎ executes original Accursed train | |||
</source> | |||
== External links == | == External links == | ||
== Tutorials == | == Tutorials == |
edits