## APL meetup

513

Weekly sessions to learn APL: a programming language that is a tool of thought.

# Signing up

If you speak Portuguese, you can sign up by filling up this brief form. You can sign up even if you have missed the first sessions: here you can find a summary of what has been covered in the past sessions and here you can find all the links to useful resources. You can also email me and I will help you catch up.

# Purpose

The weekly APL meetup has the purpose of creating a relaxed and informal setting in which people can learn about APL.

APL is a programming language that started out as an alternative to the traditional mathematical notation we all use, until it eventually became a language that can be executed by computers: this is one of the many reasons that makes learning APL such an interesting experience, both for seasoned programmers and for those who have never written a single line of code.

# Why APL?

APL is a language designed for people that, on the one hand, have problems that they want to solve with computers and, on the other hand, do not know programming. APL is a very expressive language and a lot of fun to code in, and it is also a nice introduction to the world of programming for those who have never programmed in their lives. People who already know how to program in other popular programming languages are likely to gain a lot from learning APL, as APL is an array-oriented language, which is something that is both uncommon among the popular languages and very relevant for those who want to write very fast programs.

Not only you can learn something incredible and new, which in itself is an invaluable experience, if you are a student you can use this opportunity to learn some APL in order to compete in the APL problem solving competition that is happening as you read this sentence. There are \$6.500 in prizes and there have been plenty of people who won prizes and who only started learning APL during/for the competition. (The link for the competition is https://www.dyalogaplcompetition.com.)

# Pre-requisites

There are no pre-requisites for the attendees of this meetup: everyone is welcome, regardless of their age, occupation, academic background, etc. You are only expected to speak and understand Portuguese, as that is the language the meetup will be held in.

# Session planning

Here you can find an approximate plan of what will be discussed in the upcoming sessions. It is impossible for me to plan the sessions accurately and ahead of time because the point is that participants will also shape how the sessions go, what we talk about, what we learn, etc. Further below you can find a summary of each past session.

12th of April:

• examples of tacit idioms
• operators ∘ ⍤ ⍥ for function composition

The following sessions are yet to be planned.

## Past sessions

5th of April:

• discussion of problems “Number Splitting” and “Good Evening”
• operator ∘ for argument binding
• functions ⊢ and ⊣
• tacit programming (“forks” and “atops”) ((+,-), (⌊,⊢-⌊), (≠⊆⊢), (⌈/-⌊/), ...)

29th of March:

• operators / \ ⌿ ⍀
• axis specification [k] with / \ ⌿ ⍀
• difference between 3 and ,3
• ∪ and ∩
• discuss solution to “Oh Say Can You See”

22nd of March:

15th of March:

• problems from past phase 1 competitions ([problems.tryapl.org][problems-tryapl])
• primitives ↑, ↓, ⊂, |, ⌽
• ]create # c:/tmp to synchronise the session with a folder

8th of March:

• using the Windows interpreter or RIDE
• commands )ed, )vars, )erase, )clear, )continue, )save, )load (you can find more about the commands here)
• operators ⍨, /, and ⍣
• trigonometric functions with ○, recursion with ∇, random numbers with ?
• basic guards in dfns with :
• using the editor to define dfns (Sqrt and Factorial functions)
• generating normally distributed random numbers with Box-Muller

1st of March:

• basic functions + - × ÷ * ⍳ = ≢
• arrays
• “long right scope” and “left short scope”
• defining simple functions (dfns)
• first operator /