On Wednesday, May 11, 2016 at 4:32:15 PM UTC-4, Benjamin Chung wrote:
> There is a workaround. Instead of using a nice pretty pattern, we can instead 
> escape to Racket, which would give us
> 
> 
> 
> (define-metafunction L
>    replace-with-0 : e -> e
>    [(replace-with-0 (e ..._1)) ,(make-list (length (term (e ...))) 0)])

The following at least keeps you in the pattern language, but I'm hesitant to 
say it's a nice pattern. I'd definitely like to see your first attempt 
supported!

(define-metafunction L
  replace-with-0 : e -> e
  [(replace-with-0 (e ...)) (any ...)
   (where ((any _) ...) ((0 e) ...))])

I can imagine this trick being a pain for more complex patterns/terms. 
Hopefully we can get something nicer :)

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to