HackerTrans
TopNewTrendsCommentsPastAskShowJobs

chrispsn

no profile record

Submissions

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

shakti.com
294 points·by chrispsn·il y a 2 ans·227 comments

K: Default Dicts?

gist.github.com
2 points·by chrispsn·il y a 2 ans·0 comments

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

repl.club
2 points·by chrispsn·il y a 3 ans·0 comments

K: Default Dicts?

gist.github.com
2 points·by chrispsn·il y a 3 ans·0 comments

K: We need to talk about group

gist.github.com
112 points·by chrispsn·il y a 3 ans·98 comments

comments

chrispsn
·il y a 2 ans·discuss
Click on k, then k.zip.
chrispsn
·il y a 2 ans·discuss
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.
chrispsn
·il y a 2 ans·discuss
Glad to hear it’s memorable!
chrispsn
·il y a 2 ans·discuss
Everything I've found that's public is documented here:

https://gist.github.com/chrispsn/da00835bb122c42f429a084df83...

The kparc.com links are down though.
chrispsn
·il y a 3 ans·discuss
https://secwang.github.io/ngnkcart/
chrispsn
·il y a 3 ans·discuss
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`.
chrispsn
·il y a 3 ans·discuss
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.
chrispsn
·il y a 3 ans·discuss
Yep - added a link to some simple examples in the article (below). Throughout the article there are also a few links to executable versions of the code examples.

https://ngn.codeberg.page/k/#eJxdjssKwjAQRffzFddVFyLFoiiFQD8...
chrispsn
·il y a 3 ans·discuss
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.
chrispsn
·il y a 3 ans·discuss
Yep, the comments are the BQN version.
chrispsn
·il y a 3 ans·discuss
I don't think user-level definitions of custom symbols are that useful, but for what it's worth, you can do it in ngn/k...

    (Π):!/:  / make table
    
    Π[`a   `b
     ( 1    2
       3    4)]
chrispsn
·il y a 4 ans·discuss
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...