Skip to main content

Bindings

Many ask, whether it's in the style of functional programming to declare and mutate variables within the scope of a function. If you have a couple hours left, go ahead and Google the discussion yourself. Meanwhile, in PureScript we can assign constants within the scope of a function. This can be done with bindings.

where

Using the where-keyword we declare a constant on top of our function which is later initialized. Finally, this constant will be returned from the function. Here is a small example:

addNums :: Int -> Int -> Int 
addNums x y = sum
where
sum = x + y

As this is not a practical usecase for where, you may want to declare your constant as a complex type like a list or a tuple, and then return it:

sumAndProduct :: Int -> Int -> Tuple Int Int 
sumAndProduct x y = Tuple sum product
where
sum = x + y
product = x * y

This function returns a tuple, filled with both the product and the sum of the given integers.

let

The let-keyword enables us to do the same thing as through using where. As you can see, the function signature stays the same.

sumAndProduct :: Int -> Int -> Tuple Int Int 
sumAndProduct x y =
let sum = x + y
product = x * y in
Tuple sum product