fac.ss
#lang scheme

(require "peg.ss")

(define p
  (peg
    (start start)
    (grammar
      (start (((apply fac 20)) _))
      ((fac n) (((predicate (> n 0)) (bind m (apply fac (- n 1))))
		(* n m))
	       (("0") 1)))))

(p (lambda (i)
     (string-ref "0" i)))