Proposing the HandAxe Pattern Language: fully unambiguous names for operations on lists, sets, and dictionaries!

note: crossposted from r/prolog

Time spent considering naming, is time well spent.
— Maurice Rabb


HandAxe is a vocabulary with extremely clear semantics for operating on Ordered and Unordered Lists, Sets, Dictionaries:

  • All Collections have:
  • Keys → Values
  • Indices → Elements
  • Edge-spans to specify Subcollections

HandAxe methods are:

  • Composable
  • Unambiguous
  • Immutable
  • Relational
  • Dynamically Generated in TypeScript

I want to get this comment out quickly, so I will have to share my notes later.

Implementing HandAxe in Prolog?

Across most Prolog implementations I’ve seen, our vocabulary for list/set/pair relations are highly idiosyncratic and implementation dependent! I feel that it should be entirely possible for us to develop a pure, relational, and optimized implementation of HandAxe’s semantics.

As a Prologger of ~6 months, I want to tackle something non-trivial with this language. HandAxe and Prolog seem like a natural fit, with clear semantics for each individual keyword and Prolog’s strong focus on operating on Lists!

What do you think about this talk? Would you benefit from a DSL for unambiguous operations on lists? Happy to hear more discussion!

Is there any written down about HandAxe? (I don’t have the patience to listen through a 45-minute talk)

Unfortunately, not yet. I haven’t reached out to the guy yet - been getting by with dissecting the examples in the video. Obviously not an adequate approach for a full implementation, so I’ll reach out to Maurice and get back to you :slight_smile:

1 Like