Functional Programming jargons

Side effects

Simply put side effects is when you update a value of a variable/global variable after its been set.

var result = 0
def add(a:Int, b:Int) {
    result = a+b //side effect
def add(a:Int, b:Int) = {
    return a+b //no side effect. no mutation happens here

Referentially Transparent

This is an awesome thing!. Its more or less like Idempotency. Anytime you call a function with same params it should always return the same output. Like multiplication table.

Partially Applied Functions

Partial Functions

It is not defined for some inputs. A function is called a partial function if it makes some assumptions about its inputs that are not implied by the input types.

Downcasting and UpCasting

Though down/up casting is not specific to FP, you would come across this at some point in your FP world.

object Car {}
class Sedan extends Car {}
class Suv extends Car {}
class Camry extends Sedan {}
clas Rav4 extends Suv {}

Downcasting is say where a class/object is casted to its subtype.

val someCar = new Sedan().asInstanceOf[Car]

Upcasting is when a class/object is casted to its parent type

val someSedan = new Sedan().asInstanceOf[Camry]