HPM Education - Haskell

Searchβ¦

Introduction

Types in Haskell

Defining Functions / Working with Functions

List Comprehensions

Higher-order Functions

Cutom Types

Type Classes

Interactive Programming

Functors, Applicatives and Monads

Ord β ordered types

The

`Ord`

class requires any type that wants to be an instance of it to first be an instance of the Eq class by using a class constraint, and additionally, to support the following methods:class (Eq a) => Ord a where

(<), (<=), (>), (>=) :: a -> a -> Bool

min, max :: a -> a -> a

In other words, the

`Ord`

class extends the `Eq`

class and supports additional methods `(<)`

, `(<=)`

, `(>)`

, `(>=)`

, `min`

and `max`

. The `min`

and `max`

methods are defined by default as:min x y

| x <= y = x

| otherwise = y

max x y

| x <= y = y

| otherwise = x

And for a minimal definition of the class, we just need to define the

`(<=)`

method because the other ones also have default definitions:class (Eq a) => Ord a where

(<), (<=), (>), (>=) :: a -> a -> Bool

min, max :: a -> a -> a

β

-- Minimal complete definition:

-- (<=)

x < y = x <= y && x /= y

x > y = y < x

x >= y = y <= x

min x y

| x <= y = x

| otherwise = y

max x y

| x <= y = y

| otherwise = x

All the basic types of Haskell are also instances of the

`Ord`

class.Last modified 1yr ago

Copy link