HN user

chrispsn

1,055 karma

Sydney, Australia.

Posts45
Comments107
View on HN
shakti.com 2y ago

Arthur Whitney releases an open-source subset of K with MIT license

chrispsn
294pts227
gist.github.com 2y ago

K: Default Dicts?

chrispsn
2pts0
repl.club 3y ago

Show HN: REPL.club – client-side interpreters in the browser

chrispsn
2pts0
gist.github.com 3y ago

K: Default Dicts?

chrispsn
2pts0
gist.github.com 3y ago

K: We need to talk about group

chrispsn
112pts98
mlochbaum.github.io 4y ago

What is a primitive?

chrispsn
30pts18
xpqz.github.io 4y ago

Learning APL

chrispsn
3pts0
gist.github.com 5y ago

K: War on Raze

chrispsn
79pts22
gist.github.com 5y ago

K: War on Raze

chrispsn
3pts0
mlochbaum.github.io 5y ago

BQN: Implementation of ordering functions

chrispsn
6pts0
twitter.com 5y ago

Benefits of 2D code layouts (2018)

chrispsn
30pts16
en.wikipedia.org 5y ago

The Aarne–Thompson–Uther Index

chrispsn
1pts0
ngn.bitbucket.io 5y ago

Ngn/K (WASM Port)

chrispsn
2pts0
twitter.com 5y ago

K Community Showcase

chrispsn
6pts0
abrudz.github.io 5y ago

APL386 Unicode – An APL Font

chrispsn
136pts65
mlochbaum.github.io 5y ago

BQN: An APL Variant from Marshall Lochbaum

chrispsn
60pts29
gist.github.com 6y ago

High-performance Excel Tables using VBA

chrispsn
2pts0
gist.github.com 6y ago

K Tech Tree

chrispsn
2pts0
gist.github.com 6y ago

K Tech Tree

chrispsn
2pts0
www.nongnu.org 6y ago

TXR Lisp

chrispsn
77pts9
twitter.com 6y ago

K Code Tweets

chrispsn
2pts0
www.youtube.com 6y ago

Dyalog '18: The Interpretive Advantage [video]

chrispsn
14pts2
www.youtube.com 6y ago

Example of a Shakti-powered spreadsheet application [video]

chrispsn
97pts32
gist.github.com 6y ago

Fml: An optimizing array programming language

chrispsn
9pts3
www.youtube.com 6y ago

The Interpretive Advantage [video]

chrispsn
1pts0
www.oreilly.com 6y ago

Masterminds of Programming: Chuck Moore (2009)

chrispsn
98pts40
scholarworks.iu.edu 6y ago

Aaron Hsu's thesis: A data parallel compiler hosted on the GPU

chrispsn
4pts0
bitbucket.org 6y ago

Ngn/K

chrispsn
2pts0
solarpunk.systems 6y ago

Wc in K

chrispsn
1pts0
johnearnest.github.io 6y ago

iKe

chrispsn
3pts0

Adding to RodgerTheGreat's comment: for me, k's power is its rich set of adverbs that are convenient to write.

Notice that aside from reverse (monadic |), all verb symbols in the above code are in most other languages (max as |, min as &, plus as +, minus as -). Adverbs (such as / for reduce and \ for scan-reduce) make the symbols we already have more generally applicable.

I think a language could go a long way with a small set of basic arithmetic symbols alongside a rich set of adverb symbols.

I think we need some kind of grouping function, but it doesn't have to be the 'generate group indices' function. I'm sure we'll have alternatives available such as `update ... by`.

In the Wordle dict example, it would have helped if a type system could tell me I was wrong when I assumed that an indexing miss would generate an empty list.

Good point - added a simple explanation in the article:

Group tells you the places each element occurs in a list. It generates lists of indices.

In case you've jumped straight to the comments, here are some intro links. Many of these also appear in ngn/k's readme.

First, direct links to ngn/k in the browser:

- REPL: https://ngn.bitbucket.io/k/#r

- Editor: https://ngn.bitbucket.io/k/

Second, the best one-stop shop for an overview of k6's primitives (both ngn/k and oK are based on k6). https://github.com/JohnEarnest/ok/blob/gh-pages/docs/Manual....

The best intro examples are in John Earnest's k editor iKe - there's a dropdown at the bottom right. http://johnearnest.github.io/ok/ike/ike.html

ngn/k's editor also has an 'examples' dropdown in its menu.

For an illustration of k's strengths, Razetime's matmul refactoring is brilliant: https://github.com/razetime/ngn-k-tutorial/blob/main/c-think...

Finally, some nice examples of concise k:

  {$[2>#?x;x;,/o'x@&'~:\x<*1?x]}    / Quicksort
  
  (+':,)\~!10                       / Pascal's triangle
  
  {x x}{x{x[x]y}y}                  / Y-combinator
Executable versions of above:

- Quicksort (via Kelas's KCC guide): https://ngn.bitbucket.io/k/#eJwrLLaqVok2slO2r7CusNbRz1evcFBT...

- Pascal (via Richie/Attila): https://ngn.bitbucket.io/k/#eJzT0Fa30tGMqVM0NAAADYMCZg==

- Y-combinator (via ngn): https://ngn.bitbucket.io/k/#eJyLtKquUKiora6oroiuiK2srax14IqM...

K: War on Raze 5 years ago

The results of ⍸ for different rank arguments are actually inconsistent.

Yep. For this reason deep where ideally wouldn't live on '&'. It should be able to absorb any structure for subsequent use with deep indexing etc, regardless of rank. Perhaps another reason to make 'explode' an adverb...?

You didn't mention it, so for avoidance of doubt: have you heard of k?

Commercial k variants come with a columnar data store (see Kx's q/kdb+, Shakti's k9).

F (2006) 6 years ago
     `A 0: ("some";"lines";"are";"here");     / write to file A
     `B 0: ("more";"lines";"follow";"here");  / write to file B
     _/ 0:' `A`B                              / read files A, B and find lines of B that are not in A
    more  
    follow

I agree with most of this article, except that - for me - grouping by table columns is a more intuitive and flexible way to control subset application than 'rank'.

k9 is in development, but blending k7 and k9 we'd get something like:

   t: [[]sensor:  1 2 1 2 1 2
         day:     1 1 2 2 1 1
         reading: 1 2 3 4 5 6]
  
   0 1 1 0 * select by sensor, day from t
  sensor day|             
  ------ ---|----------------
  1      1  |[[]reading: 0 0]
  1      2  |[[]reading: ,3]
  2      1  |[[]reading: 2 6]
  2      2  |[[]reading: ,0]

you can name columns and use the name in formulas

You can do that in Excel too: whether it's the whole column of a sheet, or a column of a table - syntax for latter is `someTable[someColumnName]`. Mesh will have the latter, albeit with different syntax.

Thank you for the links! I will have a look. There's a deep history.

Thanks! I have been considering this!

It might impact the 'flow' of modelling eg using automatic cell names like 'A1'. And it might complicate storing the sheet as text (might need to store more complex layout info than 'table is at coordinates x,y').

But it could also make layout easier, eg tables underneath each other could have different column widths. Could use CSS flow layout.

I also hadn't heard of Spreadsheet 2000 - great reference, thanks.

BTW - I think of the Mesh spreadsheet as a canvas, just a 'discrete' one as opposed to continuous. In theory, if the grain is fine enough (eg 1 character width of a monospace font), then you might be able to get the best of both discrete and continuous approaches.

When you say 'has the functionality of a spreadsheet but looks nothing like current spreadsheets', what do you mean?

I am working on Mesh Spreadsheet. It gives you a spreadsheet UI that writes code as text. It will likely use k9 as the formula language once it matures, but:

- you can try the JavaScript prototype at this link: http://mesh-spreadsheet.com

- you can see a proof of concept video using k here: https://www.youtube.com/watch?v=CEG9pFNYBCI

Ode to J 6 years ago

It's probably like k's find (`?`), which gets the indices of the found elements, or else the length of the list (or null, depending on the dialect) if not found:

     "abc"?"caz"
    2 0 3