Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Write a function buckets : ('a 'a -> bool) -> 'a list -> 'a list list that partitions a list into equivalence classes. That

Write a function buckets : ('a 'a -> bool) -> 'a list -> 'a list list that partitions a list into equivalence 

Write a function buckets : ('a 'a -> bool) -> 'a list -> 'a list list that partitions a list into equivalence classes. That is, buckets equiv 1st should return a list of lists where each sublist in the result contains equivalent elements, where two elements are considered equivalent if equiv returns true. For example: buckets (=) [1;2;3;4] = [[1]; [2]; [3];[4]] buckets (=) [1;2;3; 4;2;3;4;3;4] = [[1]; [2:2]; [3;3;3];[4;4;4]] buckets (fun x y-> (=) (x mod 3) (y mod 3)) [1;2;3;4;5;6] = [[1;4]; [2;5];[3;6]] The order of the buckets must reflect the order in which the elements appear in the original list. For example, the output of buckets (=) [1;2;3;4] should be [[1]; [2]; [3];[4]] and not [[2]; [1]; [3];[4]] or any other permutation. The order of the elements in each bucket must reflect the order in which the elements appear in the original list. For example, the output of buckets (fun x y-> (=) (x mod 3) (y mod 3)) [1; 2; 3; 4; 5; 6] should be [[1;4]; [2;5]; [3;6]] and not [[4;11; [5;2]; [3;6]] or any other permutations. Assume that the comparison function ('a -> 'a -> bool) is commutative, associative and idempotent. You are not allowed to use sets or hash tables in your solution. The list concatenation operator @ may come in handy. Feel free to use helper functions. let buckets p 1 = (* YOUR CODE HERE *) assert (buckets (=) [1;2;3;4] = [[1] [2] [3] [4]]); assert (buckets (=) [1;2;3; 4;2;3; 4;3;4] = [[1]; [2;2]; [3;3;3]; [4; 4;4]]); assert (buckets (fun x y-> (=) (x mod 3) (y mod 3)) [1;2;3; 4; 5;6] = [[1;4]; [2;5]; [3;6]]); Activat

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

C++ Primer Plus

Authors: Stephen Prata

6th Edition

978-0321776402, 0321776402

More Books

Students also viewed these Programming questions

Question

Evaluate each expression if possible. V0.49

Answered: 1 week ago

Question

What is marketing research? AppendixLO1

Answered: 1 week ago