tl;dr 1) Would it be useful to allow meta values to be expressions, not merely datums? 2) Is anyone using identifiers or lists as meta values? Mostly my impression is that they're usually strings, numbers, or booleans (whose meaning wouldn't change with this upgrade).
I was thinking that it would be easy to make meta values expressions rather than datums, so that something like this: ◊(define-meta foo (* 6 7)) Means that the `foo` meta is 42. You could, in theory, run anything you wanted there: ◊(define meta bar (let () (local-require every/module) (do-a-zillion-things)) This isn't quite backward-compatible. Datums that are self-quoting, like strings, numbers, and booleans, are the same under either system. But things that look like evaluatable expressions — especially naked identifiers and lists — would be different. ◊(define-meta id bar) Today, this results in a meta value of `'bar`. But if meta values are treated as expressions, it would just be `bar`, and trigger an unbound-identifier error. Or again consider: ◊(define-meta foo (* 6 7)) Today, this results in a value of `'(* 6 7)`, but it would not under the new system. I can't really tell, however, whether the theoretical benefits outweigh the theoretical costs. -- You received this message because you are subscribed to the Google Groups "Pollen" group. To unsubscribe from this group and stop receiving emails from it, send an email to pollenpub+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/pollenpub/F1382F41-83DC-4864-8DEA-2D919DA7976F%40mbtype.com. For more options, visit https://groups.google.com/d/optout.