How to use higher-order functions in Scala

2 Answers

0 votes
// A higher‑order function is a function that does at least one of the following:
// 1. Takes another function as an argument
// 2. Returns a function as its result
// If it does either one, it qualifies.

// Higher-order function: takes a function as an argument
def applyTwice(fn: Int => Int, x: Int): Int =
  fn(fn(x))

// A simple function to pass in
def add3(n: Int): Int =
  n + 3

@main def runExample1(): Unit =
  // Use the higher-order function
  val result = applyTwice(add3, 5) // 5 + 3 = 8 + 3 = 11

  println(result)



/*
run:

11

*/

 



answered 8 hours ago by avibootz
0 votes
// A higher‑order function is a function that does at least one of the following:
// 1. Takes another function as an argument
// 2. Returns a function as its result
// If it does either one, it qualifies.

// makeMultiplier is a higher‑order function because it RETURNS another function
def makeMultiplier(n: Int): Int => Int =

  // This inner function forms a closure and remembers the value of n
  (x: Int) => x * n // Uses the captured value n

@main def runExample2(): Unit =
  // double_val is now a function created by makeMultiplier(2)
  // It remembers n = 2 through closure
  val double_val = makeMultiplier(2)

  // Calling double_val(10) multiplies 10 by the captured n (which is 2)
  println(double_val(10))
  
  

/*
run:

20

*/

 



answered 8 hours ago by avibootz
...