### ----------------------------------------------------
### -- Range::SetOps
### -- Licenses: Artistic-2.0
### -- Authors: Simon Proctor
### -- File: README.md
### ----------------------------------------------------
[![Build Status](https://travis-ci.org/Scimon/p6-Range-SetOps.svg?branch=master)](https://travis-ci.org/Scimon/p6-Range-SetOps)

NAME
====

Range::SetOps - Provides set operators geared to work on ranges.

SYNOPSIS
========

    use Range::SetOps;
    say 10 (elem) (1.5 .. 15.2);

DESCRIPTION
===========

The standard Set operators work on Ranges by first converting them to lists and then applying the set operations to these lists. But Ranges can also represent a Range of possible values for which this type of comparison does not work well. The Range::SetOps module aims to provide operators based on the Set operators but geared to work on Ranges without list conversion.

IMPLEMENTED OPERATORS
=====================

The following operators have been implemented for continous numerical ranges and also tested on string and date range. They also work on Sets of Ranges like those returned by the (|) or ∪ operators.

  * (elem)

  * ∈

  * ∉

  * (cont)

  * ∋

  * ∌

The following operators already work for continuous Ranges as expected.

  * (<=)

  * ⊆

  * (>=)

  * ⊇

  * (<)

  * ⊂

  * (>)

  * ⊃

  * ⊅

  * ⊄

  * ⊉

  * ⊈

The following Operations will return Sets comprising one or more Ranges. When the Ranges within the Set overlap they will be combined into one larger Range.

  * (|)

  * ∪

  * (&)

  * ∩

AUTHOR
======

Simon Proctor <simon.proctor@gmail.com>

COPYRIGHT AND LICENSE
=====================

Copyright 2018 Simon Proctor

This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.



