#lang racket/base

(require (for-syntax racket/base))

;; A quantified pred is:
(struct every (pred))
;; or just an atomic pred.

;; An atomic pred is:
(struct nonempty? (val))
(struct numeric? (val))
;; (... truly, we want a more generic, match-like language for
;; describing the shapes of expressions, or allow for arbitrary
;; predicates that we can evaluate through WeScheme or Whalesong.  We
;; will need to revisit this.)

;; A val, the argument to an atomic pred, is the value we should be
;; able to get from a form element:
(struct field (id))
(struct ith-field (id))
;; We may need to generalize this in the context of multi-component
;; form elements, such as the REPL.