cnfrd-ly.scm
(module cnfrd-ly mzscheme
  
  (require (lib "file.ss")
           (prefix srfi1: (lib "1.ss" "srfi"))
           "cnf-parser.scm")
  
  (provide get-clauses-from-cnf)
  
  (define (get-clauses-from-cnf path-str clause-fn literal-fn)
    (call-with-input-file* path-str
      (lambda (fp)
        (let ([info/clauses-lst (cnf-parser (lambda () (cnf-lexer fp)))])
          (values (car info/clauses-lst)
                  (srfi1:map! (lambda (clause)
                                (clause-fn (srfi1:map! literal-fn
                                                       clause)))
                              (cdr info/clauses-lst))))))))