|
| 1 | +--- |
| 2 | +name: APL |
| 3 | +contributors: |
| 4 | + - ["nooodl", "https://github.com/nooodl"] |
| 5 | +translators: |
| 6 | + - ["antonkesy", "https://github.com/antonkesy"] |
| 7 | +filename: learnapl.apl |
| 8 | +--- |
| 9 | + |
| 10 | +```apl |
| 11 | +⍝ Kommentare in APL beginnen mit ⍝. |
| 12 | +
|
| 13 | +⍝ Eine Liste von Zahlen. (¯ ist negativ) |
| 14 | +2 3e7 ¯4 50.3 |
| 15 | +
|
| 16 | +⍝ Ein Ausdruck, der einige Funktionen zeigt. In APL gibt es |
| 17 | +⍝ keine Operatorrangfolge: alles wird von rechts nach |
| 18 | +⍝ links geparst. Dies entspricht 5 + (4 × (2 ÷ (5 - 3))) = 9: |
| 19 | +5 + 4 × 2 ÷ 5 - 3 ⍝ 9 |
| 20 | +
|
| 21 | +⍝ Diese Funktionen funktionieren auch mit Listen: |
| 22 | +1 2 3 4 × 5 ⍝ 5 10 15 20 |
| 23 | +1 2 3 4 × 5 6 7 8 ⍝ 5 12 21 32 |
| 24 | +
|
| 25 | +⍝ Alle Funktionen haben sowohl Einzelargument- als auch Doppelargument- |
| 26 | +⍝ Bedeutungen. Zum Beispiel bedeutet "×" mit zwei Argumenten |
| 27 | +⍝ multiplizieren, aber wenn es nur auf eine rechte Seite |
| 28 | +⍝ angewendet wird, gibt es das Vorzeichen zurück: |
| 29 | +
|
| 30 | +× ¯4 ¯2 0 2 4 ⍝ ¯1 ¯1 0 1 1 |
| 31 | +
|
| 32 | +⍝ Werte können mit diesen Operatoren verglichen werden (1 bedeutet |
| 33 | +⍝ "wahr", 0 bedeutet "falsch"): |
| 34 | +
|
| 35 | +10 20 30 = 10 20 99 ⍝ 1 1 0 |
| 36 | +
|
| 37 | +10 20 30 < 10 20 99 ⍝ 0 0 1 |
| 38 | +
|
| 39 | +⍝ "⍳n" gibt einen Vektor mit den ersten n natürlichen Zahlen zurück. |
| 40 | +⍝ Matrizen können mit ⍴ (umformen) konstruiert werden: |
| 41 | +4 3 ⍴ ⍳5 ⍝ 0 1 2 |
| 42 | + ⍝ 3 4 0 |
| 43 | + ⍝ 1 2 3 |
| 44 | + ⍝ 4 0 1 |
| 45 | +
|
| 46 | +⍝ Einzelargument ⍴ gibt die Dimensionen zurück: |
| 47 | +⍴ 4 3 ⍴ ⍳5 ⍝ 4 3 |
| 48 | +
|
| 49 | +⍝ Werte können mit ← gespeichert werden. Lass uns den Mittelwert |
| 50 | +⍝ eines Vektors von Zahlen berechnen: |
| 51 | +A ← 10 60 55 23 |
| 52 | +
|
| 53 | +⍝ Summe der Elemente von A (/ ist Reduktion): |
| 54 | ++/A ⍝ 148 |
| 55 | +
|
| 56 | +⍝ Länge von A: |
| 57 | +⍴A ⍝ 4 |
| 58 | +
|
| 59 | +⍝ Mittelwert: |
| 60 | +(+/A) ÷ (⍴A) ⍝ 37 |
| 61 | +
|
| 62 | +⍝ Wir können dies als Funktion mit {} und ⍵ definieren: |
| 63 | +mean ← {(+/⍵)÷⍴⍵} |
| 64 | +mean A ⍝ 37 |
| 65 | +``` |
| 66 | + |
| 67 | +## Weitere Literatur |
| 68 | + |
| 69 | +- [APL Wiki](https://aplwiki.com/) |
| 70 | +- Eine ältere Version des APL-Buchs vom Erfinder: [Kenneth Iverson - A Programming Language](https://archive.org/details/aprogramminglanguage1962) |
| 71 | +- Weitere Bücher: [APL Books](https://aplwiki.com/wiki/Books) |
0 commit comments