Aditya Singh
Aditya Singh

Reputation: 16650

Pattern matching for list of pairs scala

I have been trying to learn pattern matching and pairs in Scala and use it to implement the merge sort but the pattern matching. But the pattern match to extract head and tail pair doesn't work. What is it which I am missing in the below code?

def merge(xs: List[Int], ys: List[Int]): List[Int] =
  (xs, ys) match {
    case (x: Int, y: Int) :: (xs1: List[Int], ys1: List[Int]) =>
      if (x < y) x :: merge(xs1, ys)
      else y :: merge(xs, ys1)
    case (x: List[Int], Nil) => x
    case (Nil, y: List[Int]) => y
  }

Upvotes: 0

Views: 650

Answers (1)

Akash
Akash

Reputation: 411

you have a syntax error in your 1st case statement, change it to

case (x :: xs1 , y :: ys1) 

from

case (x: Int, y: Int) :: (xs1: List[Int], ys1: List[Int]) 

You are trying to match a tuple containing Lists, not List of Tuples

Upvotes: 2

Related Questions