The CIRCLED Dialect: Example of the Form

Originally I thought "you wouldn't want to return a list of circled things, because how would you know if it was a circled list or a list of circles":

>> circled [a ([b c])]
== [b c]

>> circled [a (b) (c)]
== [b c]

But SPLICE! Can Disambiguate That!

>> circled [a ([b c])]
== [b c]

>> circled [a (b) (c)]
== \~[b c]~\  ; antiform (splice!)

If you need to narrow the types, you can do that by constraining your variables, so the constraint "sticks" for future assignments:

constrain word! x: circled [a (b) c]

Or you can just do a one-off and ENSURE the type is what you expect for this single evaluation.

; Select more than one of the following
;
data: [(a) b c d (e)]

x: ensure splice! circled data

For that matter, dialected function calls could let you say exactly how many things you want... succinctly!

; Select any two of the following
;
data: [(a) b c d (e)]

x: circled/2 data

The creature from the alternate language evolution timeline strikes again!

:octopus:

1 Like