Skip to content

Instantly share code, notes, and snippets.

View chrispsn's full-sized avatar

Chris Pearson chrispsn

View GitHub Profile
@chrispsn
chrispsn / default_dicts.md
Last active June 28, 2023 06:28
K: default dicts?
View default_dicts.md

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 May 1, 2023 10:50
We need to talk about group.
View we-need-to-talk-about-group.md

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 October 16, 2022 14:21
WAR ON RAZE
View war_on_raze.md

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
View scrapheap.k
# 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 ...
View tables_in_vba.md

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 May 18, 2023 06:57
k tech tree
View k_tech_tree.md

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
View dicts.md

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
View k_file_analytics.md

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
View transitive_closure_k.md

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
View notes.k
/ 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: