GNU APL 1.8
lists.gnu.org
lists.gnu.org
The absence of lexical scope is a big wart for me. I'm fairly familiar with J, having used it to do some Bayesian inference for some projects at work, and I eventually concluded that the language family is malformed, in part because of the absence of lexical scoping.
Seems like Dyalog APL does have this feature, which makes me want to take a look at it.
https://www.dyalog.com/uploads/documents/Papers/dfns.pdf
For example, you can write {expr} to introduce a Direct Function (dfn), where expr is an APL expression in which α and ω represent, respectively, the left and right argument of the dfn.
Dfns also support local definitions, and recursion with ∇.
I know in J you can used an array of boxed objects to "simulate" "normal" function definitions except that you don't get the rank behavior for those argument lists. Nothing prevents a language from having "normal" functions and also being able to support rank on each argument.
But, I did find APL Wiki which has a lot of good examples of code that does small comprehensible things. https://aplwiki.com/FrontPage
I am curious how the symbols used in the language are mapped onto a standard keyboard. Also, does anyone use APL in battle or is it mostly an academic toy?
Nowadays it's in a window, but it looks the same. I don't know if they still use J, or K, but anyway not in real-time. That happens on FPGAs in a rack where traders once roamed.
But while APL cannot be said to be very popular, the most popular "time-series database" used in finance is published by APL fananics.
The specialized time-series database lost much of its reason to exist when disk seek times went to zero. Nowadays you stage onto an SSD, and spool to rotating storage later, if at all.
First Derivatives’ revenue last FY was ~200m and their pre-tax profit is ~17m. To say that they are unaccountably popular on the Street is quite an overstatement.
It’s more-or-less standard mapping (across APL implementations)
$ apl
]keyb
US Keyboard Layout:
╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗
║ ~ ║ !⌶ ║ @⍫ ║ #⍒ ║ $⍋ ║ %⌽ ║ ^⍉ ║ &⊖ ║ *⍟ ║ (⍱ ║ )⍲ ║ _! ║ +⌹ ║ ║
║ `◊ ║ 1¨ ║ 2¯ ║ 3< ║ 4≤ ║ 5= ║ 6≥ ║ 7> ║ 8≠ ║ 9∨ ║ 0∧ ║ -× ║ =÷ ║ BACKSP ║
╠════╩══╦═╩══╦═╩══╦═╩══╦═╩══╦═╩══╦═╩══╦═╩══╦═╩══╦═╩══╦═╩══╦═╩══╦═╩══╦══════╣
║ ║ Q ║ W⍹ ║ E⋸ ║ R ║ T⍨ ║ Y¥ ║ U ║ I⍸ ║ O⍥ ║ P⍣ ║ {⍞ ║ }⍬ ║ |⊣ ║
║ TAB ║ q? ║ w⍵ ║ e∈ ║ r⍴ ║ t∼ ║ y↑ ║ u↓ ║ i⍳ ║ o○ ║ p⋆ ║ [← ║ ]→ ║ \⊢ ║
╠═══════╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩══════╣
║ (CAPS ║ A⍶ ║ S ║ D ║ F ║ G ║ H ║ J⍤ ║ K ║ L⌷ ║ :≡ ║ "≢ ║ ║
║ LOCK) ║ a⍺ ║ s⌈ ║ d⌊ ║ f_ ║ g∇ ║ h∆ ║ j∘ ║ k' ║ l⎕ ║ ;⍎ ║ '⍕ ║ RETURN ║
╠═════════╩═══╦╩═══╦╩═══╦╩═══╦╩═══╦╩═══╦╩═══╦╩═══╦╩═══╦╩═══╦╩═══╦╩═════════╣
║ ║ Z ║ Xχ ║ C¢ ║ V ║ B£ ║ N ║ M ║ <⍪ ║ >⍙ ║ ?⍠ ║ ║
║ SHIFT ║ z⊂ ║ x⊃ ║ c∩ ║ v∪ ║ b⊥ ║ n⊤ ║ m| ║ ,⍝ ║ .⍀ ║ /⌿ ║ SHIFT ║
╚═════════════╩════╩════╩════╩════╩════╩════╩════╩════╩════╩════╩══════════╝Thank you, and congratulations on the new release!
lots of releases, gnu is kicking hard
I've had a little trouble in the past getting it to install (this was version 1.7) on Ubuntu. Granted I've never been an expert at installing from source, but a more in-depth installation guide or YouTube tutorial would help some.
Thanks for doing this btw! I hope to eventually get to check this out!
Is it?
C# => Free; Java => Free; Common Lisp => SBCL is Free; Python => Free; Ruby => Free; C => Free; C++ => Free; Rust => Free; Haskell => Free; JavaScript => Free; Smalltalk => Pharo is Free; Perl => Free; Forth => GForth is Free; Fortran => GFortran is Free; Kotlin => Free; Scala => Free; Clojure => Free;
Now there are some paid languages like Wolfram Mathematica, Allegro Common Lisp, Lispworks Common Lisp, Delphi Pascal, Dyalog APL, IBM Fortran and some languages with paid tools like Visual Studio for .NET and the Ultimate Jetbrains IDEA IDE for Java/Kotlin/Scala. Clojure has the paid "Cursive" IDE to go with the Jetbrains IDE. However, you can use other Free IDEs to go with most paid tools (Ex: you can use several alternative IDEs for C# and Emacs for Clojure). Also, the "paid" languages are fairly niche in comparison to the free ones at the top. How many people do you know writing Dyalog APL, IBM Fortran, Delphi, and Lisp works programs? How many people do you know writing C#, JavaScript, Java, C, and Python?
If we're just talking about software in general, then yes there is a TON of expensive and closed source programs and I don't expect that to change anytime soon.
Yes, you can. There's no restriction on using the Community edition of Visual Studio for commercial products. I think there may have been initially when MS offered a free edition (initially called Express), and SQL Server express, now Compact edition, has some limitations like only one concurrent connection, and I think a 1 GB DB size limit.
There's also VS Code, which is completely free and has great support for a lot of languages through extensions.
Edit: should note, too, that thw .Net compilers have shipped with the .Net Framework since v1.0. So, technically, you dont even need Visual Studio to build a .Net app. Likewise for C++, MS has included their optimizing compiler with the Windows SDK, I think since WinXP, may have been more recent. You dont get a friendly debugger (youd need to us WinDbG) or IDE experience, but you can build.
At this point its probably easier to list the non-free things in the average stack or development pipeline than the free things.
I contrast this with when you paid for your compiler and all tools in most cases.
I created a video showing how it's used. Sorry for the poor quality. I originally planned to make a new one, but I have been working on different projects since then:
I tried following the provided instructions in the install guide a few months back and it didn't work out. I can't remember any useful information (sorry), but have a new Linux computer now that might work better. It seems like a pretty cool project! Thanks for all the work you put into it!
Cool language though, the use of symbols as keywords is... Interesting, but a neat idea