익명 함수에 파라미터 타입이 없어요

익명 함수에 파라미터 타입이 없어요 (E081: Anonymous Function Missing Parameter Type)

익명 함수(람다)의 파라미터 타입을 컴파일러가 추론할 수 없는데 명시적인 타입이 없으면 이 에러가 나요. 타입이 없는 파라미터에는 직접 타입 표기를 붙여줘야 해요.

출처: Scala 3 Reference

본문

익명 함수(람다, lambda)의 파라미터 타입을 컴파일러가 추론하지 못하고 명시적인 타입도 제공되지 않으면 이 에러가 발생해요.

컴파일러는 함수 본문을 제대로 타입 검사하려면 함수 파라미터의 타입을 알아야 해요. 타입을 추론할 문맥이 충분하지 않다면 명시적으로 타입 표기(type annotation)를 붙여줘야 하죠.

예시 (Example)

val f = (x) => x + 1

x의 타입을 알 수 있는 문맥이 없네요.

에러 (Error)

-- [E081] Type Error: example.scala:1:9 ----------------------------------------
1 |val f = (x) => x + 1
  |         ^
  |         Missing parameter type
  |
  |         I could not infer the type of the parameter x

해결 방법 (Solution)

파라미터에 명시적인 타입 표기를 붙여주세요.

// Add an explicit type annotation to the parameter
val f = (x: Int) => x + 1

또는 변수 선언을 통해 타입 문맥을 제공해도 돼요.

// Or provide type context through the variable declaration
val f: Int => Int = x => x + 1

타입 정보를 주는 문맥에서 함수를 사용하는 방법도 있어요.

// Or use the function in a context that provides type information
val result = List(1, 2, 3).map(x => x + 1)