Skip to content

Instantly share code, notes, and snippets.


Chris Pearson chrispsn

View GitHub Profile
chrispsn /
Last active October 16, 2022 14:21


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 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 ...

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 /
Last active March 30, 2023 06:02
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 /
Last active April 1, 2020 11:00
Dicts in k9

k9 dicts (WIP)

Current in k9 2020.03.27.

Standard lookup:

chrispsn /
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.


chrispsn /
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 / 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
/ Results are the same:
/ But the second line (Attila's) is much faster:
chrispsn / trees.k
Last active January 1, 2020 12:30
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 October 21, 2019 21:11
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 + ")")