Starting from:
$35

$29

Lab 10: OCaml Modules, implementing intervals Solution

In today's lab you have some practice problems to work on. These are

designed to introduce you to the OCaml module system and get used to

writing modules and signatures.




**Due:** Friday, March 30 at 5:00pm. You should be able to complete

lab work during the lab. But occasionally some work may not get

completed, thus this due date.







Introduction




In this lab you will be creating more instances of the intervals

seen in class. You will create new modules for intervals with

endpoints that are floating point numbers and for endpoints

that are rationals.




Getting Started




To get you started there are two files in the ``Labs/Files`` directory

in the public class repository.




1. The file ``intervals.ml`` contains the necessary signature and functor

definitions for creating our interval instances.




2. The file ``intInterval.ml`` contains an example interval with integer

endpoints.




3. The file ``useInterval.ml`` contains some sample usage of all the sorts

of intervals you will create.




Copy these three files into a directory named ``Lab_10`` in your personal

GitHub course repository.




Float Intervals




Create a file named ``floatInterval.ml`` in your ``Lab_10`` directory.




In this file, define a module for intervals with endpoints that are

floating point numbers (``float``) named ``Float_interval``.







Rational Intervals




Create a file named ``rationalInterval.ml`` in your ``Lab_10`` directory.




In this file, define a module for intervals whith endpoints that are

rationals (represented as pairs of type ``int * int``) named

``Rational_interval``.




The ``to_string`` function should print rationals that are simplified.

Eg. If the pair is ``(4,6)``, it should print as "2/3". You may find your

function ``frac_simplify`` from Homework 1 useful here.







Putting it All Together




Once you have implemented both the floating point intervals and the

rational intervals, use the `` mod_use`` directive to load

``intervals.ml`` first, followed by all three interval implementations.

Then load the ``useInterval.ml`` file, which provides some sample usage

of the interval modules you have implemented. (Use it to check out how

your code works.)







What to Submit




You should submit all files in your ``Lab_10`` directory, including

the three files copied from the ``Labs/Files/`` directory. This means

there should be a total of 5 files in your submission:




1. ``intervals.ml``




2. ``intInterval.ml``




3. ``useInterval.ml``




4. ``floatInterval.ml``




5. ``rationalInterval.ml``

More products