1 / 13

Mutual Recursion in Web Page Modeling: Exploring Connections and Creating Functions

This text introduces mutual recursion by modeling web pages, defining data structures, and functions for web document processing. Learn to represent web pages and build functions for extracting data.

bryga
Télécharger la présentation

Mutual Recursion in Web Page Modeling: Exploring Connections and Creating Functions

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CMSC 11500 Introduction to Computer Programming November 25, 2002 Mutual Recursion:Web pages

  2. Roadmap • Recap: The Evaluator • Mutual Recursion: • Definitions relying on other definitions • Example: Web pages • Data definitions • Example functions: count, find, ...

  3. Recap: The Evaluator • Evaluate scheme code using scheme code • Subset of scheme: Numeric expressions & functs • Function definitions • Data definitions: s-exp & s-def • An s-exp is: • 1) number • 2) symbol • 3) (make-add s-exp s-exp) • 4) (make-mul s-exp s-exp) • 5) (make-app name s-exp)

  4. Representing the Web • Web documents have: • Header and body • Body has • Words • (Links to) other documents • How can we model this? • (define-struct wp (header body)) • A web-page (w-p): • (make-wp h p) • Where h: symbol; p is ???

  5. Representing the Web • Data definition: • A (Web) document is: • 1) '() • 2) (cons s p) • Where s: symbol; p: document • 3) (cons w p) • Where w: w-p; p: document • A Web-page (w-p) is: • (make-wp h p) • Where h: symbol; p: document

  6. Mutually Recursive Functions • Data definitions cross-reference -> • Templates must cross-reference • Build simultaneously • Follow usual rules: • Condition for each clauses in def • Natural recursion for each self-ref • + cross-ref for each cross-ref

  7. Functions for Web • Template: • (define (fn-for-doc doc) • (cond ((null? doc) ....) • ((symbol? (car doc)) • (...(car doc) ... (fn-for-doc (cdr doc)) • ((w-p? (car doc)) • (... (fn-for-wp (car doc))...(fn-for-doc (cdr doc))) • (define (fn-for-wp wp) • ...(wp-header wp) ...(fn-for-doc (wp-body wp))....

  8. Size • Contract: • Size: w-p -> number • Purpose: • Find number of words (symbols) in w-p

  9. Size

  10. Wp-to-file • Contract: • Wp-to-file: w-p -> (listof symbol) • Purpose: • Produce list of all symbols/header in w-p

  11. Wp-to-file (define (wp-to-file wp) (doc-to-file (wp-body wp)) (define (doc-to-file doc) (cond ((null? doc) '()) ((symbol? (car doc)) (cons (car doc) (doc-to-file (cdr doc))) ((wp? (car doc)) (cons (wp-header (car doc)) (doc-to-file (cdr doc))))

  12. Occurs • Contract: • Occurs: w-p symbol -> boolean • Purpose: • Return true if symbol in page (or embedded), false ow

  13. Occurs (define (occurs wp word) (or (eq? (wp-header wp) word) (occurs-doc (wp-body wp) word)) (define (occurs-doc doc word) (cond ((null? doc) #f) ((symbol? (car doc)) (if (eq? (car doc) word) #t (occurs-doc (cdr doc) word))) ((wp? (car doc)) (or (occurs (car doc) word) (occurs-doc (cdr doc) word))))

More Related