DACTAL.org's Avatar

DACTAL.org

@dactal.org.bsky.social

A notional organization for an experimental query language.

9 Followers  |  2 Following  |  20 Posts  |  Joined: 20.12.2024  |  1.8516

Latest posts by dactal.org on Bluesky

DACTAL

In honor of today's relevant word, I have updated the example guesses used in this demonstration query.

dactal.org?queryname=Wo...

08.08.2025 17:59 β€” πŸ‘ 0    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

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

08.08.2025 13:52 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

dactal.org/dactal.html?...

01.08.2025 19:13 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
DACTAL

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

01.08.2025 16:52 β€” πŸ‘ 0    πŸ” 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.

31.07.2025 20:43 β€” πŸ‘ 0    πŸ” 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.

25.07.2025 15:41 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Realized and fixed an early-implementation laziness that evaluated :x=y as :(.x:@1:=y) instead of :(.x:=y)

23.07.2025 18:07 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

One of my guesses today revealed a bug in this. Gotta use ".." instead of "." in the parse routine to preserve duplicate letter/color pairs in the guess! Here's the difference:

dactal.org/dactal.html?...

21.07.2025 19:08 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
DACTAL

Oh look, a Wordle solver that fits (kinda) in a URL.

dactal.org/dactal.html?...

18.07.2025 17:53 β€” πŸ‘ 1    πŸ” 1    πŸ’¬ 1    πŸ“Œ 0
listening sample....pairs
||px=@,
  clock=(....(.pair.ts),timediff);
  this<pair;
  px=(this.px);
  clock=(this.clock);
  silence=[=clock-ms_played];
  restart=(.silence:>60000);
.(.pair:px=1,@2)/@@restart

listening sample....pairs ||px=@, clock=(....(.pair.ts),timediff); this<pair; px=(this.px); clock=(this.clock); silence=[=clock-ms_played]; restart=(.silence:>60000); .(.pair:px=1,@2)/@@restart

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:

18.07.2025 02:16 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
DACTAL

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

10.07.2025 15:25 β€” πŸ‘ 0    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Post image

That version didn't account for repeat letters correctly. This one might.

05.07.2025 03:41 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

Huh, worked out the Wordle logic in DACTAL form.

04.07.2025 21:29 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 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))

28.06.2025 15:26 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 1

Recent minor enhancements for control:

+ and - in sort operations explicitly specify numeric sort-direction

~ in sort keys specifies strict literal sort-order

; in aggregations specifies aggregators (over properties with the same name)

20.06.2025 03:35 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Also, reverse index-number filtering is now @@, instead of @-, so getting the last 10 items is

:@@<=10

instead of the weird looking

:@-<=10

which also means getting everything but the last 10 can be

:-@@<=10

or, of course,

:@@>10

19.06.2025 17:27 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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!

19.06.2025 17:19 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 1

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

18.06.2025 20:49 β€” πŸ‘ 1    πŸ” 1    πŸ’¬ 1    πŸ“Œ 0

And, although I strongly suspect the audience for this additional note is 0, I did make one breaking change: the looping operator now repeats the preceeding operation, rather than repeating the subquery it appears in. So anything you had that did

??)

should now instead do

)??

12.06.2025 18:37 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

There have been many small improvements to DACTAL recently, all of them described in the also-much-improved interactive manual at dactal.org.

12.06.2025 18:33 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
DACTAL

dactal.org now starts with a little explanation of what this is before cannonballing into the syntax.

13.03.2025 18:29 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

@dactal.org is following 2 prominent accounts