-- Leo's gemini proxy

-- Connecting to sunshinegardens.org:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini; lang=en

26-8₂


once, i wanted to work on a scheme dialect. maybe make the m expression language happen. then Φοίβη came along and introduced me to APL and arron hsu goes and writes down co-dfns on a tee and i just can't get it out of my head. (thank you)


APL resources


Does APL Need a Type System?


Does APL Need a Type System?


> A Mathematics of Arrays (Mullin 88)


functional programming languages solve an HCI problem, not just a semantic problem!

how do we shrink our code size by an order of magnitude?

suggestive fountain -> serendipitous transfer -> cross-domain optimization

leverage the human mind -> concretized domain overlap


notation as a tool of thought

A data parallel compiler hosted on the GPU

apl source code


⍝ RationalsAreCountable
⍝ ⌽⍋⍋⌽
(⍳×/s)≡⌶∘⍋⍨⍋⍋,+⌿¨1+⍳s

APL Character Table (1/4)

APL Character Table (2/4)

APL Character Table (3/4)

APL Character Table (4/4)


Design Patterns vs Anti-pattern in APL


Design Patterns vs Anti pattern in APL


Don't be fanatical.

Enjoy computing.

Have fun!


> emotional attachment to engineering

> cult of best practices


what if i told you that APL is easy to read? all you have to do is free your mind from the matrix.


⍝ Avg
+⌿÷≢
⍝ APartitioningFunction
(⍺⍺ ⍵) ⍵⍵⌸ ⍵

transparency > abstraction


> Lisp changes. The Scheme dialect used in this text has evolved from the original Lisp and differs from the latter in several important ways, including static scoping for variable binding and permitting functions to yield functions as values. In its semantic structure Scheme is as closely akin to Algol 60 as to early Lisps. Algol 60, never to be an active language again, lives on in the genes of Scheme and Pascal. It would be difficult to find two languages that are the communicating coin of two more different cultures than those gathered around these two languages. Pascal is for building pyramids--imposing, breathtaking, static structures built by armies pushing heavy blocks into place. Lisp is for building organisms--imposing, breathtaking, dynamic structures built by squads fitting fluctuating myriads of simpler organisms into place. The organizing principles used are the same in both cases, except for one extraordinarily important difference: The discretionary exportable functionality entrusted to the individual Lisp programmer is more than an order of magnitude greater than that to be found within Pascal enterprises. Lisp programs inflate libraries with functions whose utility transcends the application that produced them. The list, Lisp's native data structure, is largely responsible for such growth of utility. The simple structure and natural applicability of lists are reflected in functions that are amazingly nonidiosyncratic. In Pascal the plethora of declarable data structures induces a specialization within functions that inhibits and penalizes casual cooperation. It is better to have 100 functions operate on one data structure than to have 10 functions operate on 10 data structures. As a result the pyramid must stand unchanged for a millennium; the organism must evolve or perish.

> — SICP


∧.(=∨0=⊢)

control flow is unnatural and unnecessary

the apl function is its own name


A Ray of Hope: Array Programming for the 21st Century


A Ray of Hope: Array Programming for the 21st Century


-- typed array programming
shape is a vector of numbers indicating the size of each dimension
rank is the number of dimensions
Forall a, rank(a) = length(shape(a))

FORTH resources


Multicore processors, FORTH programming, and the relationship between software and silicon

Updating the Forth Virtual Machine


goals


program nomad


nomad architecture


posts


2019-10-17 - programming for the next billion


-- Response ended

-- Page fetched on Fri May 17 08:38:13 2024