DACTAL.org
@dactal.org
📤 16
📥 2
📝 53
A notional organization for an experimental query language.
Extensions are accumulating. Here's a geo adapter feeding into a weather adapter feeding into a map renderer. Europe .search countries .weather forecast |temp=(
[email protected]
_2m_max) ...map=(...colorField=temp,width=700,height=700) |data-of
6 days ago
0
1
1
Club teammates, but World Cup group opponents? Yes, several.
dactal.org?dbname=wc202...
loading . . .
DACTAL
https://dactal.org/?dbname=wc2026&query=club+teammates%2C+group+opponents
6 days ago
2
1
1
If you haven't learned what >> and << and ~~ do, it's too late because they don't do anything any more.
24 days ago
0
0
0
I've made some changes that are either exciting or too geeky to comprehend, depending on how geeky you are. I'll post about them, but if you have any trouble in the meantime, you can use dactal1.js to keep using the previous version.
about 1 month ago
1
0
0
reposted by
DACTAL.org
Every Noise at Once
about 1 month ago
And if you want a bizarrely oblique quasi-command-line interface to Spotify and Apple Music at once, there's also
dactal.org/curiax.html
loading . . .
DACTAL Apple/Spotify cross-explorer
https://dactal.org/curiax.html
0
1
1
Everything is a list.
2 months ago
0
0
0
reposted by
DACTAL.org
glenn mcdonald
2 months ago
There are services that will magically move your music collection from one service to another. But we don't have to put up with secret magic and what if we didn't?
2
7
1
reposted by
DACTAL.org
glenn mcdonald
2 months ago
A "Jump to Recipe" button for software.
0
0
1
reposted by
DACTAL.org
glenn mcdonald
3 months ago
Hmm, what about a query that traverses music services?
loading . . .
1
5
3
reposted by
DACTAL.org
Every Noise at Once
4 months ago
Data navigation. (
dactal.org/curiam.html
– you'll need Apple Music for this one, and tolerance for a deliberately unadorned state.)
loading . . .
0
4
1
You have a rack with no good Scrabble plays. Which tile is the best to unload? Here's that question asked in DACTAL.
8 months ago
0
0
0
Structurally tiny but useful addition. Inverting a graph arc can now be done like this: .inverse name>forward property E.g., in data where each album has track objects, but the tracks don't refer back to their album: .album>tracks adds an "album" property to each track while traversing.
8 months ago
1
0
0
Tiny additions. Filtering items that have any, or no, values for a property can now be done with: :property+ :property- as shorthand for the subquery forms: :(.property) :-(.property) But the subquery forms are still needed for any path more complicated than a single property.
8 months ago
0
0
0
I should pretend I designed this feature intentionally, but in reality I just realized that because something/someprop.10 gives us the first 10 items from each group, you can also truncate each group to 10 items in place, like this: something/someprop|of=10
9 months ago
0
0
0
The Gallery now includes a DACTAL Sudoku solver! Or, more accurately, a Sudoku solution-process revealer.
dactal.org/dactal.html?...
9 months ago
0
0
0
This may not interest you until you suddenly hit a case where you need it, but you can now short-circuit a traverse operation when it gets its first results, like this: some data.<(.some expensive subquery) instead of running the subquery N times only to throw away N-1 of the results.
9 months ago
0
0
0
DACTAL,ATProto.fun
add a skeleton here at some point
9 months ago
1
0
0
A start/labeling operation can append to the existing list with ?label=+(subquery) ??label=+(subquery) And a start operation can use the value ONLY as a reference with =label =type Thus this form for setting a label if it isn't already set: ??district size=(=district size;~1000)
10 months ago
0
0
0
Sometimes you want (or just need) the results of another query in the middle of the one you're writing. Highlight the subquery and hit Command-U to unpack it.
loading . . .
10 months ago
0
0
0
Saved relative queries let you encapsulate complexity, like AEIODLT .possible words .by added letter And now you can decapsulate it again with command-I (for Inline).
loading . . .
10 months ago
0
0
0
Also: added regex filtering. And then, only a little later, added documentation of regex filtering.
10 months ago
0
1
0
If anybody can vibe-code embryonic ideas into slick apps, we're gonna get a lot of slick apps sealed airlessly around ideas that never got a chance to become. I want the opposite of that, unslick explorers of exposed exologic. We only start at the beginning.
dactal.org/Scrabble.html
10 months ago
2
2
1
Yesterday's excellent tiny realization: subtractive traversal is a set-disjunction operation, but subtractive traversal with duplicates is itemwise removal. ...x=(1,1,2,2,3,3),y=(2) .x,-y → 1,3 ..x,y → 1,1,2,3,3
11 months ago
0
0
0
dactal.org/dactal.html?...
11 months ago
0
0
0
On one hand, we already know all the prime numbers below 1000. On the other, here's the Sieve of Eratosthenes in a DACTAL query.
dactal.org/dactal.html?...
loading . . .
DACTAL
https://dactal.org/dactal.html?query=...queue%3D%28....from%3D3%2Cto%3D1000%2Cnumbers%29%2C%3Cbr%3E+++prime%3D%282%29%3Cbr%3E%3Cbr%3E%7Cnext%3D%28.prime%3A%40%401%29%2C%3Cbr%3E+multiplier%3D%28....from%3D0%2Cto%3D%5B%3D%281000-next**2%29%2Fnext%5D%2Cnumbers%29%2C%3Cbr%3E+sieve%3D%28%2Fnext%2Cmultiplier%3B.%5B%3Dnext**2%2Bnext*multiplier%5D%29%2C%3Cbr%3E+queue%3D%28.queue%2C-next%2C-sieve%29%2C%3Cbr%3E+prime%3D%2B%28.queue%3A%401%29%21&queryname=sieve+of+eratosthenes
11 months ago
0
0
0
I give you your carets back. ^ and ^^ for comments have been replaced by ??? for notes, so ^ is no longer a reserved character. ??? your notes here Notes in DACTAL are a null operation, not meta-text, which has some cool implications that I haven't thought of yet.
11 months ago
0
0
0
I moved the inline-math handling to a more sensible place in the resolution process, so now you can use it in traversal, grouping, sorting, or either form of annotation.
11 months ago
0
0
0
Realized and fixed an early-implementation laziness that evaluated :x=y as :(.x:@1:=y) instead of :(.x:=y)
11 months ago
0
0
0
Oh look, a Wordle solver that fits (kinda) in a URL.
dactal.org/dactal.html?...
loading . . .
DACTAL
https://dactal.org/dactal.html?query=xt+xa+gr+xe+gs%2C%3Cbr%3Exn+go+gr+xm+gs%2C%3Cbr%3Exc+go+gr+xp+gs%2C%3Cbr%3Exf+go+gr+xk+gs%2C%3Cbr%3Exw+go+gr+xd+gs%3Cbr%3E%3Cbr%3E%3F%3Fcolors%3D%28....g%3Dgreen%2Cy%3Dyellow%2Cx%3Dgray%3Bindex%29%3Cbr%3E%5Eparse%3Cbr%3E.%28....word%3D%28%3Cbr%3E++...._%2C%7E%5B+%5D%2Csplit.%28...characters%2Ccolorcode%2Cletter%29%3Cbr%3E++.%28....letter%2Ccolor%3D%28.colorcode.colors.name%29%29%3Cbr%3E++%7Cx%40%3B%3Cbr%3E%29%29%3Cbr%3E%3F%3Fwords%3Cbr%3E%3Cbr%3E%3F%3Fminmax%3D%28.%28%3Cbr%3E++.word%2Fletter%3Cbr%3E++++%7C%7Cmin%3D%28.of%3Acolor-%3Dgray....count%29%2C%3Cbr%3E+++++max%3D%28%3A%28.of%3Acolor%3Dgray%29.min%29%3Cbr%3E++%29%2Fletter%3Cbr%3E++%7Cmin%3D%28.of.min....max%29%2Cmax%3D%28..of.max%3A%401%29%3Cbr%3E%29%3Cbr%3E%3F%3Fpositions%3D%28.word%2Fx%7Cmust%3D%28.of%3Acolor%3Dgreen.letter%29%2Cnot%3D%28.of%3Acolor-green.letter%29%23%2Bx%29%3Cbr%3E%3Cbr%3E%3F%5B%2Fdata%2Fwordle_words.json%5D.fetch.data%3Cbr%3E.%28....word%2Cletters%3D%28....word%2Ccharacters..%28....letter%3D%28._%29%29%7Cx%40%29%29%3Cbr%3E%7Cfreqs%3D%28.letters%2Fletter%2Ccount%3Dfreq%7C-name%2C-key%2C-of%29%3Cbr%3E%7Cposition+errors%3D%28.letters%2C%28positions%29%2F%2Fx%3A-%28.letter%2C-not%29%2C%28.must%2C-letter%29%29%2C%3Cbr%3E+frequency+errors%3D%28.freqs%2C%28minmax%29%2F%2Fletter%7C%7Cfreq%3D%28.freq%3B%280%29%29%3Afreq%3C%28.min%29%2Cfreq%3E%28.max%29%29%3Cbr%3E%3A-%28.position+errors%2Cfrequency+errors%29%3Cbr%3E%3Cbr%3E%3F%3Fletters+left%3D%28%2Flx%3Dletters%7C%7Cletter%3D%28.lx.letter%29%2Cx%3D%28.lx.x%29%2Cleft%3D-count%2C-lx%29%3Cbr%3E%7Cscore%3D%28.letters%2C%28letters+left%29%2Fletter%2Cx%3Acount%3E1..of..left....total%29+%23score%3Cbr%3E%3Cbr%3E...multi%3D%28horizontal%29%2Cguesses%3D%28words%29%2Cwords+remaining%3D_&queryname=
11 months ago
1
1
1
To go with /@x, which groups consecutive sequences with shared x properties, you can now also do /@@y to group sequences that start with each occurrence of y. E.g grouping streams into listening sessions broken by gaps of more than 10 minutes between songs:
11 months ago
0
0
0
Realized that the recently-added |x@ shortcut, for annotating a list of items with their list indexes, was actually the beginning of the missing feature for doing running ranks/counts/totals. e.g. cumulative duration: tracks2||cumulative duration=@@duration
dactal.org/dactal.html#...
loading . . .
DACTAL
https://dactal.org/dactal.html#cumulative3:~:text=%3D%40%20annotation%20suboperator
12 months ago
0
0
1
Huh, worked out the Wordle logic in DACTAL form.
12 months ago
1
1
0
The new ?? label operation has the same labeling options as a ? start operation, but relative to, and without changing, the current list: tracks|others=(??this .artist.tracks:-(this)) This replaces the more limited special-casing of "=_" in starts: tracks|others=(?this=_ .artist.tracks:-(this))
12 months ago
0
0
1
Today in obsessive buffing of rough spots: Filter negation is now done with -, instead of !. tracks:-=Amaranth This was the only use of ! as a suboperator, which frees it up to be the repeat operator, instead of ??. messages._,replies!
about 1 year ago
1
0
1
reposted by
DACTAL.org
Every Noise at Once
about 1 year ago
Today's tiny DACTAL tweak that probably affects nobody: in an aggregation, semicolons explicitly identify aggregators. So this query is a count of counts; the first "count" is a property (of groups), the second "count" is the aggregator. tracks/artist...count;count
1
1
1
There have been many small improvements to DACTAL recently, all of them described in the also-much-improved interactive manual at
dactal.org
.
about 1 year ago
1
0
0
dactal.org
now starts with a little explanation of what this is before cannonballing into the syntax.
loading . . .
DACTAL
https://dactal.org/
over 1 year ago
0
0
0
you reached the end!!
feeds!
log in