;; "relate" accepts a positive integer x and relation R and returns { y | (x y) €R }. ;; Type signature: (relate positive-int relation) -> set-of-ints (define (relate x R) (define (relate-helper x R) (cond [(null? R) '0] [(= x (caar R)) (cons (cadar R) (relate-helper x (cdr R)))] [else (relate-helper x (cdr R))])) (make-set (relate-helper x R)))

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

The question is the first screenshot, and in the second I have attached the "relate" helper function. I keep trying and feel I am overcomplicating things majorly and was wondering if there's a simpler way to complete this.

#| Implement "compose" to accept two relations S and R,
and return S R, or S composed with R.
|S•R = { (x z) | 3y: (x y) ER A (y z) E S }.
Advice for implementation:
Consider each edge (a b) in R. For every edge (c d) in S,
if b and c are equal then add (a d) to the output.
See if you can leverage the "relate" helper function!
| Examples:
(compose '() '((3 2) (2 4)) )
-> ().
(compose '((1 1) (2 1) (1 3)) '() )
-> ()
(compose '((2 4) (3 5) (4 6) (5 7)) '((1 2) (2 3) (3 4) (4 5)) )
-> ((1 4) (2 5) (3 6) (4 7))
(compose '((2 4) (5 8) (3 4)) '((2 4) (5 8) (3 4)) )
-> ().
(compose '((1 1) (2 2) (3 2)) '((1 1) (2 2) (2 3)) )
-> ((1 1) (2 2))
(compose '((1 1) (2 1) (3 1) (4 1)) '((1 1) (1 2) (1 3)) )
-> ((1 1))
(compose '((1 1) (1 2) (1 3)) '((1 1) (2 1) (3 1) (4 1)) )
-> ((1 1) (1 2) (1 3) (2 1) (2 2) (2 3) (3 1) (3 2) (3 3) (4 1) (4 2) (4 3))
|#
;; Type Signature: (compose relation relation) -> relation
(define (compose S R)
"TODO: Implement")
Transcribed Image Text:#| Implement "compose" to accept two relations S and R, and return S R, or S composed with R. |S•R = { (x z) | 3y: (x y) ER A (y z) E S }. Advice for implementation: Consider each edge (a b) in R. For every edge (c d) in S, if b and c are equal then add (a d) to the output. See if you can leverage the "relate" helper function! | Examples: (compose '() '((3 2) (2 4)) ) -> (). (compose '((1 1) (2 1) (1 3)) '() ) -> () (compose '((2 4) (3 5) (4 6) (5 7)) '((1 2) (2 3) (3 4) (4 5)) ) -> ((1 4) (2 5) (3 6) (4 7)) (compose '((2 4) (5 8) (3 4)) '((2 4) (5 8) (3 4)) ) -> (). (compose '((1 1) (2 2) (3 2)) '((1 1) (2 2) (2 3)) ) -> ((1 1) (2 2)) (compose '((1 1) (2 1) (3 1) (4 1)) '((1 1) (1 2) (1 3)) ) -> ((1 1)) (compose '((1 1) (1 2) (1 3)) '((1 1) (2 1) (3 1) (4 1)) ) -> ((1 1) (1 2) (1 3) (2 1) (2 2) (2 3) (3 1) (3 2) (3 3) (4 1) (4 2) (4 3)) |# ;; Type Signature: (compose relation relation) -> relation (define (compose S R) "TODO: Implement")
;; "relate" accepts a positive integer x and relation R and returns { y | (x y) ER }.
;; Type signature: (relate positive-int relation) -> set-of-ints
(define (relate x R)
(define (relate-helper x R)
(cond
[(null? R) '01
[(= x (caar R))
(cons (cadar R)
(relate-helper x (cdr R)))]
[else (relate-helper x (cdr R))]))
(make-set (relate-helper x R)))
Transcribed Image Text:;; "relate" accepts a positive integer x and relation R and returns { y | (x y) ER }. ;; Type signature: (relate positive-int relation) -> set-of-ints (define (relate x R) (define (relate-helper x R) (cond [(null? R) '01 [(= x (caar R)) (cons (cadar R) (relate-helper x (cdr R)))] [else (relate-helper x (cdr R))])) (make-set (relate-helper x R)))
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps

Blurred answer
Knowledge Booster
Requirement Analysis
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education