Type

A collection of related values.

Type Error

Applying a function to arguments with the wrong types.

  • Found at compile time
    • Safe
    • Fast
Type Inference
  • Every well-formed expression has a type
  • Type can be automatically calculated at compile time

Basic Types

Bool
Char
String     -- A list of Char
Int        -- Fixed-precision
Integer    -- Arbitrary-precision
Float

Other Types

List
  • A sequence of values of the same type
  • No information about the length
Tuple
  • A sequence of values of the different types
  • Encodes information about the size
Function
  • A mapping from a value to another
Curried Function
  • Functions that take arguments one at a time
  • Useful functions can be made by partially applying a curried function
  • Currying conventions
    • Arrow -> associates to the right
    • Function applications associate to the left
add' :: Int -> Int -> Int     -- Right associative
add' x y = x + y              -- add' x = \y -> x + y

-- Compared to
add :: (Int, Int) -> Int
add x y = x + y
Polymorphic Function
  • Type contains one or more type variables
    • Must begin with a lower-case letter, usually named a, b, c, etc.
length [a] -> Int
Overloaded Function
  • Type contains one or more class constraints
Num
Eq
Ord

Example:

(+)  :: Num a => a -> a -> a
(==) :: Eq a => a -> a -> Bool
(<)  :: Ord a => a -> a -> Bool

results matching ""

    No results matching ""