<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: lokedhs</title><link>https://news.ycombinator.com/user?id=lokedhs</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 15 Jun 2026 16:53:21 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=lokedhs" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by lokedhs in "Mastering Dyalog APL"]]></title><description><![CDATA[
<p>Dyalog APL, along with other modern array languages that are related to it can all do imperative programming with loops etc.<p>There are certainly valid arguments that you hive certain things up when moving to an array language, but loops are not one of those.<p>That said, you won't use loops as much, but that's not because loops are not available.</p>
]]></description><pubDate>Sun, 24 May 2026 15:16:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=48257938</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=48257938</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48257938</guid></item><item><title><![CDATA[New comment by lokedhs in "A little comparison between R and Kap"]]></title><description><![CDATA[
<p>Thanks, that makes sense. I guess most CSV data you see in the real world do have headers. Perhaps I was looking too much about thr default CSV export format from Excel, focusing on making sure it can always be parsed. And Excel doesn't have column headers.</p>
]]></description><pubDate>Tue, 05 May 2026 02:45:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=48017522</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=48017522</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48017522</guid></item><item><title><![CDATA[New comment by lokedhs in "A little comparison between R and Kap"]]></title><description><![CDATA[
<p>I see. Kap tries to be as generic as possible, so assuming that the table has headers doesn't feel right. If the table dont have headers, and the reader assumes it does, then you'll potentially silently lose the first row of data.</p>
]]></description><pubDate>Tue, 05 May 2026 01:41:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=48017104</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=48017104</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48017104</guid></item><item><title><![CDATA[New comment by lokedhs in "A little comparison between R and Kap"]]></title><description><![CDATA[
<p>The string to specify the column types is not a terrible idea. Does it have other configuration options, like whether or not to assume the first row is the headers, or specifying the separator character?</p>
]]></description><pubDate>Mon, 04 May 2026 23:39:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=48016368</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=48016368</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48016368</guid></item><item><title><![CDATA[New comment by lokedhs in "A Letter from Dijkstra on APL (1982)"]]></title><description><![CDATA[
<p>That wouldn't help much. People who don't use these languages doesn't understand that what makes the language different isn't the syntax. There are plenty of dialects that use English words instead of symbols (check out Ivy by Ron Pike for example).<p>The difference is much deeper, but the best way to understand it is probably to check out an introduction (there is a lot on youtube).<p>I'd personally be happy to give an introduction to anyone willing to listen, but this comment field is not the place to do it.</p>
]]></description><pubDate>Fri, 01 May 2026 18:30:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=47978274</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=47978274</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47978274</guid></item><item><title><![CDATA[New comment by lokedhs in "APL is more French than English"]]></title><description><![CDATA[
<p>Which would have been fine. In fact, if you read the notes from the very first implementation of APL you'll find that it was noted that they considered the lack of proper flow control as a gap that needed to be filled later.<p>Yet, even as the 90's rolled around you could find people writing articles in Quote Quad arguing that suggestions to add structured programming constructs to APL was somehow going against the spirit of the language.<p>Kinda sad it took 50 years for that attitude to change.</p>
]]></description><pubDate>Sun, 26 Apr 2026 10:48:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47909218</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=47909218</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47909218</guid></item><item><title><![CDATA[New comment by lokedhs in "APL is more French than English"]]></title><description><![CDATA[
<p>That list is incomplete. Those are things that Lisp invented but is now commonplace. What it also invented but rather few languages also support is the capability of metaprogramming, being able to treat code as data.</p>
]]></description><pubDate>Sun, 26 Apr 2026 10:37:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=47909150</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=47909150</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47909150</guid></item><item><title><![CDATA[New comment by lokedhs in "APL is more French than English"]]></title><description><![CDATA[
<p>This is a good article to understand the thinking behind array languages in general, and APL in particular.<p>However, I disagree with some points made. In particular, this one:<p>> Some people say the most important issue at hand is to improve the data structures of APL. Others say what APL needs is a little bit of Franglais, which in our terms is APLGOL. “If APL only had the while-statement, or the if-then-else, or the for-statement, it would become such a perfect language.” That’s ridiculous. And it’s silly to say that if APL had arrays of arrays, all of our troubles would disappears. In point of fact, what will happen is that the amount of troubles would just grow almost exponentially if that happened.<p>This turned out to be untrue. And the resistance in the community to do this is partly what lead to its loss of popularity.<p>Modern array languages, and indeed most APL implementations, have these things and they did not create troubles. In fact, it made them practical and easier to learn, because it allows users to use the style that suits the problem at hand the best. And in some cases, a pure array solution is just not appropriate.</p>
]]></description><pubDate>Sun, 26 Apr 2026 08:37:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=47908544</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=47908544</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47908544</guid></item><item><title><![CDATA[New comment by lokedhs in "APL is more French than English"]]></title><description><![CDATA[
<p>To be fair, most languages in use today are just FORTRAN with diffrent syntax.<p>Both Lisp and array language programmers are sadly somewhat rare.</p>
]]></description><pubDate>Sun, 26 Apr 2026 08:30:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=47908500</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=47908500</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47908500</guid></item><item><title><![CDATA[Finding Words Using Kap]]></title><description><![CDATA[
<p>Article URL: <a href="https://blog.dhsdevelopments.com/finding-words-using-kap">https://blog.dhsdevelopments.com/finding-words-using-kap</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43181178">https://news.ycombinator.com/item?id=43181178</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 26 Feb 2025 06:13:14 +0000</pubDate><link>https://blog.dhsdevelopments.com/finding-words-using-kap</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=43181178</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43181178</guid></item><item><title><![CDATA[New comment by lokedhs in "An imperative introduction to array programming"]]></title><description><![CDATA[
<p>Interesting observation. The fundamental syntax of Kap is the same as APL. The imperative style is added on top, and isn't really the way you'd normally write code. The examples were written that way in order to make a point the the code can he as verbose as you want.<p>I often use the code from the standard library that renders array output as an example of real world Kap code that is written in what I would consider regular style.<p><a href="https://codeberg.org/loke/array/src/branch/master/array/standard-lib/output3.kap" rel="nofollow">https://codeberg.org/loke/array/src/branch/master/array/stan...</a></p>
]]></description><pubDate>Thu, 31 Oct 2024 08:41:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=42004638</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=42004638</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42004638</guid></item><item><title><![CDATA[An imperative introduction to array programming]]></title><description><![CDATA[
<p>Article URL: <a href="https://blog.dhsdevelopments.com/an-imperative-introduction-to-array-programming">https://blog.dhsdevelopments.com/an-imperative-introduction-to-array-programming</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42004159">https://news.ycombinator.com/item?id=42004159</a></p>
<p>Points: 1</p>
<p># Comments: 2</p>
]]></description><pubDate>Thu, 31 Oct 2024 07:03:57 +0000</pubDate><link>https://blog.dhsdevelopments.com/an-imperative-introduction-to-array-programming</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=42004159</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42004159</guid></item><item><title><![CDATA[New comment by lokedhs in "Arthur Whitney's one liner sudoku solver (2011)"]]></title><description><![CDATA[
<p>That depends on the specific code. Some code is written to be agnostic to the rank, while others make certain assumptions.<p>In my code I'd sometimes write assertions in the beginning of a function to not only ensure it's called with the right shape but also as documentation.<p>Also, in practice really high rank arrays aren't used much. Even 4 is pretty rare.</p>
]]></description><pubDate>Sun, 06 Oct 2024 17:36:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=41758659</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=41758659</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41758659</guid></item><item><title><![CDATA[New comment by lokedhs in "Arthur Whitney's one liner sudoku solver (2011)"]]></title><description><![CDATA[
<p>Just because you can write everything on one line without any spaces doesn't mean you should.<p>You can ofcourse removethe capability to do thatand you'll effectively force the programmer to write more venous code, but then its strength as an interfacing tool is very much reduced.<p>The Iversonian languages has the capability to write incredibly terse code which is really useful when working interactively. When you do, your code truly is write-only because it isn't even saved. This is the majority of code that at least I write in these languages.<p>When writing code that goes in a file, you can choose which style you want to use, and I certainly recommend making it a bit less terse in those cases. The Iversonian languages are still going to give you organs that are much shorter than most other languages even even it's written in a verbose style.</p>
]]></description><pubDate>Sun, 06 Oct 2024 17:32:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=41758637</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=41758637</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41758637</guid></item><item><title><![CDATA[New comment by lokedhs in "Arthur Whitney's one liner sudoku solver (2011)"]]></title><description><![CDATA[
<p>It's likely a combination of both. It's certainly possible to write Kap in a much more condensed form. But things like if-statements and hash maps does allow for a more imperative style.</p>
]]></description><pubDate>Sun, 06 Oct 2024 13:12:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=41756932</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=41756932</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41756932</guid></item><item><title><![CDATA[New comment by lokedhs in "Arthur Whitney's one liner sudoku solver (2011)"]]></title><description><![CDATA[
<p>You're not wrong. It's very easy to get that impression when trying to learn the array languages. It's very easy for someone who's used these languages for a long time to look at a problem, and say "why did you use that really elaborate solution, when you can just use ⍸⍣¯1?". No one probably ever told you that ⍸ has an inverse, and how you could use it.<p>Even today, after having worked in these languages for years, I am still put off a bit by the walls of code that some array programmers produce. I fully understand the reasoning why it's written like that, but I just prefer a few spaces in my code.<p>I've been working on an array language based on APL, and one of my original goals was to make "imperative style" programming more of a first-class citizen and not punish the beginner from using things like if-statements. It remains to be seen how well I succeeded, but even I tend to use a more expressive style when terseness doesn't matter.<p>Here's an example of code I've written which is the part of the implementation that is responsible for taking any value (such as nested arrays) and format them nicely as text using box drawing characters. I want to say that this style is a middle ground between the hardcore pure APL style found in some projects and the style you'll see in most imperative languages: <a href="https://codeberg.org/loke/array/src/branch/master/array/standard-lib/output3.kap" rel="nofollow">https://codeberg.org/loke/array/src/branch/master/array/stan...</a></p>
]]></description><pubDate>Sun, 06 Oct 2024 12:14:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=41756586</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=41756586</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41756586</guid></item><item><title><![CDATA[New comment by lokedhs in "Arthur Whitney's one liner sudoku solver (2011)"]]></title><description><![CDATA[
<p>"More efficiently"? Maybe. It opens up a new way to think about solutions to problems. Sometimes those solutions are more efficient, and sometimes they are just different.<p>It's a useful thing to learn though. And dare I say it, fun. Even if there was zero benefit to it, it'd still be fun. As it turns out, there really are benefits.<p>For me, the biggest benefit is when I'm working with data interactively. The syntax allows me to do a lot of complex operations on sets of data with only a few characters, which makes you feel like you have a superpower (especially when comparing to someone using Excel to try to do the same thing).</p>
]]></description><pubDate>Sun, 06 Oct 2024 12:03:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=41756529</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=41756529</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41756529</guid></item><item><title><![CDATA[New comment by lokedhs in "A List of companies that use Array Languages (J, K, APL, q)"]]></title><description><![CDATA[
<p>The short answer is yes. There have been many presentations on this topic that tries to explain it in various ways.<p>The problem is that most people who are unfamiliar with APL usually don't see the larger picture, and you need to learn the language before understanding the reasoning. But once you understand it, you don't really need to hear the arguments anymore.<p>One argument that may be easier to digest is that the very optimised syntax allows you to easily work with the data in an interactive fashion. This is similar to how a calculator that forced you to write 1.add(2) would be rather painful to use, even if it functionally is the same as 1+2.<p>In programs that you save to a file and is part of a larger project, this benefit is of course less relevant.</p>
]]></description><pubDate>Sun, 28 Jul 2024 14:07:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=41093236</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=41093236</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41093236</guid></item><item><title><![CDATA[New comment by lokedhs in "Array languages vs. the curse of the spreadsheet"]]></title><description><![CDATA[
<p>It's not sort. In Kap, sort down is ∨. The grade functions returns a sorted index. Basically ⍒ 3 1 2 1 1 returns 0 2 1 3 4. So yes, it performs a sort, but it returns an index that can be used to later look up the respective elements.<p>You can read more about it here if you're interested: <a href="https://www.aplwiki.com/wiki/Grade" rel="nofollow">https://www.aplwiki.com/wiki/Grade</a><p>And here's a silly example where a random array is created, then an array lookup is performed on the sorted indexes:<p><a href="https://kapdemo.dhsdevelopments.com/clientweb2/#a%20%E2%86%90%20%3F20%E2%8D%B4100%20%20%20%20%20%20%20%E2%8D%9D%20Create%20a%20random%20array%20of%2020%20numbers%20between%200%20and%2099%0Ab%20%E2%86%90%20a%5B%E2%8D%8Ba%5D%20%20%20%20%20%20%20%20%20%E2%8D%9D%20Look%20up%20values%20in%20a%20based%20on%20the%20graded%20index%0An%20%E2%86%90%20(%3Ca)%20%E2%8D%AA%20b%20%20%20%20%20%20%E2%8D%9D%20Increase%20the%20rank%20of%20a%20(turning%20it%20into%20a%202-dimensional%20array)%20and%20attach%20b%20below%20it%2C%20creating%20a%202-by-20%20array%0Achart%3Abar%20n%20%20%20%20%20%20%20%E2%8D%9D%20Display%20the%20result%20in%20a%20bar%20chart%0An%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%E2%8D%9D%20Return%20n%20so%20it's%20printed%20after%20the%20chart" rel="nofollow">https://kapdemo.dhsdevelopments.com/clientweb2/#a%20%E2%86%9...</a></p>
]]></description><pubDate>Wed, 06 Mar 2024 11:48:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=39614902</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=39614902</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39614902</guid></item><item><title><![CDATA[New comment by lokedhs in "Array languages vs. the curse of the spreadsheet"]]></title><description><![CDATA[
<p>I am the author by the way. The intent wasn't really to try to sell the language. The language is what it is, but the thing I wanted to highlight was that the entire solution (language combined with the user interface) provides a better foundation for working with arrays of data than a spreadsheet. Perhaps that point would have been more clear if I had removed the actual code since it takes away from the more interesting point.<p>As for the language, the longer version looks like an imperative solution please it is an imperative solution. Kap allows you to write code that looks mostly like your average scripting language:<p><pre><code>    a ← 0
    sum ← 0
    while (a < 10) {
      sum ← sum + a
      a ← a + 1
    }
    sum
</code></pre>
But if all you are going to do is write code like that, you might just as well write it in Javascript (well, unless you want to take advantage of support for things like bignums, rationals and complex numbers).<p>Of course, an actual Kap programmer wouldn't write the code above like that. They'd write it like this instead: +/⍳10<p>There is a perfectly valid argument that the ⍳ in the example above could be written in a different way, and sure, Rob Pike chose to use actual words in his version of APL, or you could use J where the example would be written as +/i.10<p>But none of that is really important, and most people in the array programming community doesn't care whether you write "plus reduce iota 10", or +/⍳10. What they really care about it how the idea of using array operations completely eliminates loops in most cases. That's what is interesting, not the choice of symbols.</p>
]]></description><pubDate>Wed, 06 Mar 2024 11:36:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=39614831</link><dc:creator>lokedhs</dc:creator><comments>https://news.ycombinator.com/item?id=39614831</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39614831</guid></item></channel></rss>