# APL Cultivation: Difference between revisions

No edit summary |
m (Text replacement - "<source" to "<syntaxhighlight") |
||

(27 intermediate revisions by 2 users not shown) | |||

Line 1: | Line 1: | ||

'''APL Cultivation''' | '''APL Cultivation''' was a series of 90-minute live chat lessons given by [[Adám Brudzewsky]] in the [[APL Orchard]] chat room in the period 2017–2020. Over the course of 2021–2022, [[user:xpqz|Stefan Kruger]] edited the content into a book called [[APL Cultivations]]. | ||

The first season consisted of 29 weekly sessions running from 18 October 2017 until 16 May 2018, covering most aspects of basic APL programming. | The first season consisted of 29 weekly sessions running from 18 October 2017 until 16 May 2018, covering most aspects of basic APL programming. Initially, the lessons were not organised, but were given completely impromptu. However, between lessons 2 and 3, Erik Konstantopoulos bookmarked the first two lessons using Stack Exchange's chat conversation bookmarking feature, and thus established the lessons as a numbered series. The name was first used for lesson 15 at the end of January 2018, but was since applied retroactively to all such lessons. | ||

The series continued on 28 November 2019, with more in-depth lessons every two-three weeks. This was sparked by interest among participants of a presentation by [[Morten Kromberg]] and [[Aaron Hsu]] called ''Pragmatic Array Oriented Functional Programming'', held during Jio talks 2019, after which a series of "APL Hacknights" were to be held in the APL Orchard. However, the audience of the first such eventtypos turned out mostly to be people who had ''not'' been at the Jio talk, and it was decided to fold this new series into a continuation of the previous one. This series ran for 20 sessions until 25 August, 2020. | |||

== | == Lessons == | ||

=== First season === | |||

{|class=wikitable | {|class=wikitable | ||

! Lesson !! Title !! Date | ! Lesson !! Title !! Date | ||

Line 13: | Line 14: | ||

| 2 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-2-diving-into-functions-in-apl Diving Into Functions in APL] || Oct 25, 2017 | | 2 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-2-diving-into-functions-in-apl Diving Into Functions in APL] || Oct 25, 2017 | ||

|- | |- | ||

| 3 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-3-some-apl-operators----- Some APL Operators: < | | 3 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-3-some-apl-operators----- Some APL Operators: <syntaxhighlight lang=apl inline>/ ⌿ \ ⍀ ¨ ⍣ ⍨</syntaxhighlight>] || Nov 1, 2017 | ||

|- | |- | ||

| 4 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-4-more-apl-operators-- More APL operators: < | | 4 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-4-more-apl-operators-- More APL operators: <syntaxhighlight lang=apl inline>∘ @ ⌶</syntaxhighlight>] || Nov 8, 2017 | ||

|- | |- | ||

| 5 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-5-even-more-apl-operators-- Even more APL operators: < | | 5 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-5-even-more-apl-operators-- Even more APL operators: <syntaxhighlight lang=apl inline>⌺ ⌸</syntaxhighlight>] || Nov 15, 2017 | ||

|- | |- | ||

| 6 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-6-apl-functions----- APL functions: < | | 6 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-6-apl-functions----- APL functions: <syntaxhighlight lang=apl inline>+-×÷*⍟⌹○!? !⌈⌊⊥⊤⊣⊢ =≠≤<>≥≡≢ ∨∧⍲⍱ ↑↓</syntaxhighlight>] || Nov 22, 2017 | ||

|- | |- | ||

| 7 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-7-apl-functions- APL functions: < | | 7 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-7-apl-functions- APL functions: <syntaxhighlight lang=apl inline>⊂⊃⊆⌷</syntaxhighlight>] || Nov 29, 2017 | ||

|- | |- | ||

| 8 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-8-apl-functions-- APL functions: < | | 8 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-8-apl-functions-- APL functions: <syntaxhighlight lang=apl inline>⍋⍒ ⍳</syntaxhighlight>] || Dec 6, 2017 | ||

|- | |- | ||

| 9 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-9-apl-functions--- APL functions: < | | 9 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-9-apl-functions--- APL functions: <syntaxhighlight lang=apl inline>⍸∊⍷∪∩~ /\⌿⍀ ,⍪</syntaxhighlight>] || Dec 13, 2017 | ||

|- | |- | ||

| 10 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-10-apl-functions-- APL functions < | | 10 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-10-apl-functions-- APL functions <syntaxhighlight lang=apl inline>⍴⌽⊖⍉ ⍎⍕</syntaxhighlight>] || Dec 20, 2017 | ||

|- | |- | ||

| 11 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-11-system-functions-behaviour-session System Functions: behaviour, session] || Jan 3, 2018 | | 11 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-11-system-functions-behaviour-session System Functions: behaviour, session] || Jan 3, 2018 | ||

Line 55: | Line 56: | ||

| 23 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-23-transcribing-to-and-reading-trains Transcribing to and reading trains] || Mar 28, 2018 | | 23 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-23-transcribing-to-and-reading-trains Transcribing to and reading trains] || Mar 28, 2018 | ||

|- | |- | ||

| 24 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-24-r-and-s < | | 24 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-24-r-and-s <syntaxhighlight lang=apl inline>⎕R</syntaxhighlight> and <syntaxhighlight lang=apl inline>⎕S</syntaxhighlight>] || Apr 3, 2018 | ||

|- | |- | ||

| 25 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-25-understanding-function-application Understanding function application] || Apr 11, 2018 | | 25 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-25-understanding-function-application Understanding function application] || Apr 11, 2018 | ||

Line 66: | Line 67: | ||

|- | |- | ||

| 29 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-29-more-user-commands More user commands] || May 16, 2018 | | 29 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-29-more-user-commands More user commands] || May 16, 2018 | ||

|} | |||

=== Second season === | |||

{|class=wikitable | |||

! Lesson !! Title !! Date | |||

|- | |- | ||

| 30 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-30-counting-words-faster Counting words faster] || Nov 28, 2019 | | 30 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-30-counting-words-faster Counting words faster] || Nov 28, 2019 | ||

Line 71: | Line 76: | ||

| 31 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-31-tradfns Tradfns] || Dec 19, 2019 | | 31 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-31-tradfns Tradfns] || Dec 19, 2019 | ||

|- | |- | ||

| 32 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-32-basic-use-of- Basic use of ⍤] || Jan 2 | | 32 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-32-basic-use-of- Basic use of ⍤] || Jan 2, 2020 | ||

|- | |- | ||

| 33 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-33-advanced-use-of- Advanced use of ⍤] || Jan 16 | | 33 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-33-advanced-use-of- Advanced use of ⍤] || Jan 16, 2020 | ||

|- | |- | ||

| 34 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-34-fk-in-depth < | | 34 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-34-fk-in-depth <syntaxhighlight lang=apl inline>f⍣k</syntaxhighlight> in depth] || Jan 30, 2020 | ||

|- | |- | ||

| 35 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-35-fg-in-depth < | | 35 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-35-fg-in-depth <syntaxhighlight lang=apl inline>f⍣g</syntaxhighlight> in depth] || Feb 13, 2020 | ||

|- | |- | ||

| 36 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-36-the-variant-option-operator--opt The variant option operator: < | | 36 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-36-the-variant-option-operator--opt The variant option operator: <syntaxhighlight lang=apl inline>⍠ ⎕OPT</syntaxhighlight>] || Feb 27, 2020 | ||

|- | |- | ||

| 37 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-37--in-depth < | | 37 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-37--in-depth <syntaxhighlight lang=apl inline>⊥</syntaxhighlight> in depth] || Mar 12, 2020 | ||

|- | |- | ||

| 38 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-38--in-depth < | | 38 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-38--in-depth <syntaxhighlight lang=apl inline>⊤</syntaxhighlight> in depth] || Mar 26, 2020 | ||

|- | |- | ||

| 39 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-39-array-programming-techniques Array programming techniques] || Apr 7 | | 39 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-39-array-programming-techniques Array programming techniques] || Apr 7, 2020 | ||

|- | |- | ||

| 40 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-40-condition-controlled-loops Condition-controlled loops] || Apr 21 | | 40 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-40-condition-controlled-loops Condition-controlled loops] || Apr 21, 2020 | ||

|- | |||

| 41 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-41--in-depth <syntaxhighlight lang=apl inline>⌹</syntaxhighlight> in depth] || May 5, 2020 | |||

|- | |||

| 42 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-42-array-coding-style-in-depth Array coding style in depth] || May 12, 2020 | |||

|- | |||

| 43 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-43-complex-numbers-in-depth Complex numbers in depth] || Jun 2, 2020 | |||

|- | |||

| 44 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-44-simple-plotting Simple plotting] (with Nicolas Delcros) || Jun 16, 2020 | |||

|- | |||

| 45 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-45-simple-plotting-continued Simple plotting continued] (with Nicolas Delcros) || Jun 30, 2020 | |||

|- | |||

| 46 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-46-unique-mask--and-constant- Unique mask <syntaxhighlight lang=apl inline>≠</syntaxhighlight> and constant <syntaxhighlight lang=apl inline>⍨</syntaxhighlight>] || Jul 14, 2020 | |||

|- | |||

| 47 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-47-atop--and-over- Atop <syntaxhighlight lang=apl inline>⍤</syntaxhighlight> and Over <syntaxhighlight lang=apl inline>⍥</syntaxhighlight>] || Jul 28, 2020 | |||

|- | |||

| 48 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-48-c-dt-1200 <syntaxhighlight lang=apl inline>⎕C</syntaxhighlight> <syntaxhighlight lang=apl inline>⎕DT</syntaxhighlight> <syntaxhighlight lang=apl inline>1200⌶</syntaxhighlight>] || Aug 11, 2020 | |||

|- | |||

| 49 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-49-extensions-in-18-0--1-json Extensions in 18.0: <syntaxhighlight lang=apl inline>⊂</syntaxhighlight> <syntaxhighlight lang=apl inline>⍸⍣¯1</syntaxhighlight> <syntaxhighlight lang=apl inline>⎕JSON</syntaxhighlight>] || Aug 25, 2020 | |||

|} | |} | ||

Line 93: | Line 116: | ||

* [https://chat.stackexchange.com/rooms/info/52405/the-apl-orchard?tab=conversations Statistics for all lessons] | * [https://chat.stackexchange.com/rooms/info/52405/the-apl-orchard?tab=conversations Statistics for all lessons] | ||

{{APL community}} | <!-- * [https://chat.stackexchange.com/rooms/info/52405/the-apl-orchard?tab=schedule#meeting-2411 Schedule and registration for reminders] --> | ||

{{APL community}}[[Category:Online sessions]] |

## Latest revision as of 22:23, 10 September 2022

**APL Cultivation** was a series of 90-minute live chat lessons given by Adám Brudzewsky in the APL Orchard chat room in the period 2017–2020. Over the course of 2021–2022, Stefan Kruger edited the content into a book called APL Cultivations.

The first season consisted of 29 weekly sessions running from 18 October 2017 until 16 May 2018, covering most aspects of basic APL programming. Initially, the lessons were not organised, but were given completely impromptu. However, between lessons 2 and 3, Erik Konstantopoulos bookmarked the first two lessons using Stack Exchange's chat conversation bookmarking feature, and thus established the lessons as a numbered series. The name was first used for lesson 15 at the end of January 2018, but was since applied retroactively to all such lessons.

The series continued on 28 November 2019, with more in-depth lessons every two-three weeks. This was sparked by interest among participants of a presentation by Morten Kromberg and Aaron Hsu called *Pragmatic Array Oriented Functional Programming*, held during Jio talks 2019, after which a series of "APL Hacknights" were to be held in the APL Orchard. However, the audience of the first such eventtypos turned out mostly to be people who had *not* been at the Jio talk, and it was decided to fold this new series into a continuation of the previous one. This series ran for 20 sessions until 25 August, 2020.

## Lessons

### First season

### Second season

Lesson | Title | Date |
---|---|---|

30 | Counting words faster | Nov 28, 2019 |

31 | Tradfns | Dec 19, 2019 |

32 | Basic use of ⍤ | Jan 2, 2020 |

33 | Advanced use of ⍤ | Jan 16, 2020 |

34 | `f⍣k` in depth |
Jan 30, 2020 |

35 | `f⍣g` in depth |
Feb 13, 2020 |

36 | The variant option operator: `⍠ ⎕OPT` |
Feb 27, 2020 |

37 | `⊥` in depth |
Mar 12, 2020 |

38 | `⊤` in depth |
Mar 26, 2020 |

39 | Array programming techniques | Apr 7, 2020 |

40 | Condition-controlled loops | Apr 21, 2020 |

41 | `⌹` in depth |
May 5, 2020 |

42 | Array coding style in depth | May 12, 2020 |

43 | Complex numbers in depth | Jun 2, 2020 |

44 | Simple plotting (with Nicolas Delcros) | Jun 16, 2020 |

45 | Simple plotting continued (with Nicolas Delcros) | Jun 30, 2020 |

46 | Unique mask `≠` and constant `⍨` |
Jul 14, 2020 |

47 | Atop `⍤` and Over `⍥` |
Jul 28, 2020 |

48 | `⎕C` `⎕DT` `1200⌶` |
Aug 11, 2020 |

49 | Extensions in 18.0: `⊂` `⍸⍣¯1` `⎕JSON` |
Aug 25, 2020 |

## External links