Skip to content

Instantly share code, notes, and snippets.


Chris Pearson chrispsn

View GitHub Profile


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:


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

chrispsn / scrapheap.k
Last active Dec 23, 2020
k design scrapheap
View scrapheap.k
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?

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.


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 /
Last active Apr 1, 2020
Dicts in k9

k9 dicts (WIP)

Current in k9 2020.03.27.

Standard lookup:

chrispsn /
Last active Mar 13, 2020
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.


chrispsn /
Last active Feb 23, 2020
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 / notes.k
Last active Dec 19, 2019
On lambdas
View notes.k
/ Abstraction considered harmful? One-at-a-time thinking preventing parallelisation?
/ AoC 2019 problem 4
/ Results are the same:
/ But the second line (Attila's) is much faster:
chrispsn / trees.k
Last active Jan 1, 2020
Trees in k
View trees.k
/ "Apter trees"
/ John Earnest notes
/ Aaron Hsu talk on high-performance tree wrangling
/ Translation into k by JE:
/ Conquering recursion:
/ - comments from geocar and John Earnest
chrispsn / eval_in_context.js
Last active Oct 21, 2019
IE11-compatible version of Brian Beck's eval-in-context
View eval_in_context.js
"use strict";
function evalInContext(env, code) {
s = JSON.stringify,
locals = Object.keys(env),
keys ={return s(k)}),
values ={return env[k]}),
body = s("return eval(" + code + ")")