Skip to content

Instantly share code, notes, and snippets.

View chrispsn's full-sized avatar

Chris Pearson chrispsn

View GitHub Profile

K: Default dicts?

Code examples are in ngn/k, a dialect where int null is 0N and a list find miss is 0N, not #list.


It would be nice if a grouped list gave empty int list for an outdex, and outdex of frequency gave zero. (See here for more.)

 x:="abracadabra"
@chrispsn
chrispsn / we-need-to-talk-about-group.md
Last active February 9, 2024 06:33
We need to talk about group.

We need to talk about group.

I'm sorry to tell you, but group is gone.

If you check out the latest k.d on shakti.com as at 28 March 2023, you'll see that 'unary' = is now 'freq' (frequency).

Group had a long life: it's been around since at least k2, or 1996.

So why did group go? And what should we use instead?

@chrispsn
chrispsn / war_on_raze.md
Last active February 9, 2024 02:45
WAR ON RAZE

WAR ON RAZE

This is the story of what happened when I went down a rabbit hole.

It starts with k7. If you press Ctrl-] in the k7 WASM console, this appears:

x^x*/:x:2_!100

That's a prime number filter. There are faster ones - kparc.com's x,1_&&/80#'!:'x is beautiful - but this one is really short.

@chrispsn
chrispsn / scrapheap.k
Last active July 10, 2022 13:51
k design scrapheap
# Unevaluated
A `wrap attribute that causes overindexing to auto-mod based on length of list.
Avoids mismatch of behaviour of i# and -i#. Cut will auto-fill if not long enough.
Negative indexing wraps backwards: (`wrap"abc")[-1] is "c"
Requires `null to go back to default behaviour?
## Slice as basis for lots of primitives
Inspired by ngn's https://chat.stackexchange.com/transcript/message/59004538#59004538 ...

Excel Tables and VBA

It's 2020, and there's now many ways to work with data of arbitrary length in Excel:

  • Power Query's M language
  • JavaScript
  • dynamic arrays.

But if you use or support older Excel versions, VBA can still be useful.

@chrispsn
chrispsn / k_tech_tree.md
Last active March 26, 2024 01:00
k tech tree

k tech tree

Thought experiment:

Which k primitives can be implemented as k-strings, reasonably efficiently, with a handful of 'native' built-ins?

Not verified to be in dependency order yet... may depend on the choice of 'fundamental' primitives. Need to do speed tests too.

k9 syntax (download via Shakti). Got a better way to write one? Feel free to comment, you'll be credited!

@chrispsn
chrispsn / dicts.md
Last active April 1, 2020 11:00
Dicts in k9

k9 dicts (WIP)

Current in k9 2020.03.27.

Standard lookup:

 [a:1;b:2]`b
2
@chrispsn
chrispsn / k_file_analytics.md
Last active March 13, 2020 12:35
K usage statistics

Analytics on k code

Mildly interesting results from string analysis of a handful of k files. If you have more public k files or suggestions for further analysis, comment below!

This uses the latest Shakti.

Corpus:

@chrispsn
chrispsn / transitive_closure_k.md
Last active January 9, 2023 20:39
Transitive closure in k

Transitive Closure in k

In The APL Orchard, ngn said:

the or-dot-and [∨.∧] trick is one of the most beautiful apl expressions ever, worth staring at :)

Well I had better learn it then...

Apparently it computes a transitive closure of a binary relation. Let's hit Wikipedia.

@chrispsn
chrispsn / notes.k
Last active December 19, 2019 20:43
On lambdas
/ Abstraction considered harmful? One-at-a-time thinking preventing parallelisation?
/ AoC 2019 problem 4
```q
i:${x+!1+y-x}.`i$"-"\:"193651-649729"
/ Results are the same:
1~({x~^x}#i)~i@&&/~<':+i
/ But the second line (Attila's) is much faster: