Question

Write a Scheme predicate function that tests for the structural equality of two given lists. Two...

Write a Scheme predicate function that tests for the structural equality of two given lists. Two lists are structurally equal if they have the same list structure, although their atoms may be different.

0 0
Add a comment Improve this question Transcribed image text
Answer #1

Program plan:

• Two lists are structurally equal if they have the same list structure, although their atoms may be different.

• So we are going to write a function which checks if elements in both the list at same position are atoms or not.

• If yes then it should return true else false.

Program:

#lang scheme

( define (structurally-equal list1 list2)

(cond ((and (null? list1) (null? list2)) #t)

((or (null? list1) (null? list2)) #f)

((and (atom? (car list1)) (atom? (car list2)))

(structurally-equal (cdr list1) (cdr list2)))

((or (atom? (car list1)) (atom? (car list2))) #f)

(else (and (structurally-equal (car list1) (car list2))

(structurally-equal (cdr list1) (cdr list2) )))))

( define (atom? x) (not (or (pair? x) (null? x))))

Add a comment
Know the answer?
Add Answer to:
Write a Scheme predicate function that tests for the structural equality of two given lists. Two...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
  • (c++) Write a predicate function that checks whether two vectors have the same elements in the...

    (c++) Write a predicate function that checks whether two vectors have the same elements in the same order. Write a predicate function that checks whether two vectors have the same elements in the same order bool equals(vector<int> a, vector<int> b) provided code : #include <iostream> #include <vector> using namespace std; bool equals(vector<int> a, vector<int> b) { // TODO } int main() { // TODO // Print Expected, "Vectors a and b are " (print "equal." if they are. Otherwise, print...

  • Given two sorted lists, L1 and L2, write a C++ function to compute L1 ∪ L2...

    Given two sorted lists, L1 and L2, write a C++ function to compute L1 ∪ L2 using only the basic list operations.

  • In C++ Please for both questions and thank you! Write a predicate function named isEqual that...

    In C++ Please for both questions and thank you! Write a predicate function named isEqual that is passed in 2 vectors of integers and returns true if the vectors are equal, otherwise returns false Two vectors are equal if they have exactly the same values, all in exactly the same location within the vector. You may not use the overloaded vector operator ==, since that is the functionality you are to reproduce. Hint: At what point in your solution can...

  • a) 7% Define a function (the function definition only) named combine_lists that receives two lists of...

    a) 7% Define a function (the function definition only) named combine_lists that receives two lists of integers (the function has 2 parameters). You can assume that each list is the same length and each list is not empty. The function will create a new list which is composed of the addition of each element of the two lists. The function returns the new list. For example, if the function is sent this list: [2,4,6,8,10] and this list: [5,6,7,8,9] then the...

  • IN PYTHON: Write a function that takes, as arguments, two lists, one of which is a...

    IN PYTHON: Write a function that takes, as arguments, two lists, one of which is a character list and the other is the corresponding frequencies, and sorts the characters in ascending order of frequencies. The function should return a list consististing of two lists: the first list is the list of characters and the second is the list of corresponding frequencies, consistent with the rearranged characters. Name this function sortCharacters(characterList, frequencyList). For example, >>>sortCharacters(["a", "b", "c", "d"], [5, 8, 3,...

  • Write a function that takes two lists that are in ascending order as arguments. The function...

    Write a function that takes two lists that are in ascending order as arguments. The function should return a new list that has all the values from the two argument lists and is also in ascending order (e.g., [1,3,5] and [2,4,6] become [1,2,3,4,5,6]). Please use python

  • Using Scheme: Write a function absDiff that calculates the absolute difference of the corresponding elements of...

    Using Scheme: Write a function absDiff that calculates the absolute difference of the corresponding elements of two lists. The function also evaluates to a list. (absDiff'(1 3 5 6) (3 5 2 1)). - (2 2 3 5). The function must also work if the two input lists are not the same length. We ask you to create two versions of this function: Assume that the missing elements in the shorter list have the value of 0. The result will...

  • use python to solve this problem Problem 3- contains.py: Sub-list containment You will write a function...

    use python to solve this problem Problem 3- contains.py: Sub-list containment You will write a function to determine whether a given sub-list" s appears within another given list 1. The problem will guide you through the problem breakdown. Essentially, first you can solve the easier problem if the "sub-list" s appears within 1 at a specific position i. Then Practice goal: Guided practice with modular thinking and programming. Problem 3a Partial equality [5 points] Write a function contains_at that accepts...

  • Function Name: zip_d Parameters: two equal-sized lists Returns: a dictionary Description: Write a function, zip_d, that...

    Function Name: zip_d Parameters: two equal-sized lists Returns: a dictionary Description: Write a function, zip_d, that takes a two equal-sized lists as parameters, and zips each list into a dictionary. Sample Inputs/Outputs: Example Call: zip_d([1,2,3], ['a','b','c']) Expected Return: {1: 'a', 2: 'b', 3: 'c'} Example Call: zip_d([‘a’,’b’,’c’],[9.8,7.6,5.4]) Expected Return: {‘a’:9.8, ’b’:7.6, ’c’:5.4} please answer in python

  • PYTHON 3 HELP Write a function find_common_elements(list_p,list_q) that accepts two lists, list_p and list_q, as parameters...

    PYTHON 3 HELP Write a function find_common_elements(list_p,list_q) that accepts two lists, list_p and list_q, as parameters and returns a new list that contains only the elements that are common between two lists (without duplicates). Make sure your program works on two lists of different sizes. Demonstrate your function works by calling it with 2 different pairs of lists. Pseudocode for find_common_elements(list_p,list_q): INITIALIZE empty common_list FOR EACH element e in list_p: IF e is in list_q: ADD e to common_list RETURN...

ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT