Skip to content

Latest commit

 

History

History
70 lines (44 loc) · 7.46 KB

2022-03-07-Deep-Dive-on-FP-FL-J.md

File metadata and controls

70 lines (44 loc) · 7.46 KB

There was not actual meeting, just a lot of links:

This deep dive started with me noticed the FL -> J relationship on the programming languages genealogical tree. That led to:

After reading the J / FP / FL wikis which mention that J's tacit programming is directly influenced by FL's function level programming and then also reading the 1.4 APL and 1.5 FP secions of Hudak's paper, it is extrememly clear the relationship bewteen APL -> FP -> FL -> J is very real. I had previously read The FL Project paper and noticed that FL used 3-juxtaposed functions to define the S' Combinator, just as J and Dyalog APL do. I thought this was a coincidence when I read the paper but it clearly was not. After googling FL vs FP I came across these:

which hosts a ton more links:

Note that the J experssion built up in Functional Programming Archaeology can be done much more concisely using I. (Indices).

explicit =. {{ (5 < y) # (i. # y) }}
tacit    =. 5&<#i.&#
better   =. [:I.5<]

Although my favorite solution would be BQN's /5⊸<


I also noticed that this diagram says J was influenced by APL96, which is not a thing. See family tree of array languages. This led to also looking into these:


Have still been googling trying to track down when the S' combinator was introduced into FL.

image

image

image

Also, another page that references APL -> FP -> FL -> J is the Backus wiki profile.

image


YEESSSS!!! I finally found the source of the S' combinator. It IS actually in FP, it is the "combining form" of infix notation which is actually the last line of Backus' 85 paper above. I missed it initially because it isn't in bold. Also, very confusingly other papers don't mention infix notation as being a combining form. The FL Manual has a secion of Infix Notation and Precedence separate from Combining Forms and doesn't actually show the version below:

image

Will watch later: John Backus: Function Level Programming and the FL Language