함수 타입에는 비어 있지 않은 파라미터 목록이 필요했어요

함수 타입에는 비어 있지 않은 파라미터 목록이 필요했어요 (E085: Function Type Needs Non-Empty Parameter List)

이 에러는 Scala 3.0.0이 릴리스되기 전에 제거된 에러라, 실제로 스칼라 3 컴파일러가 내보낸 적은 없어요. 초기 Dotty 버전에서 빈 파라미터 목록을 가진 implicit 또는 erased 함수 타입을 정의하려 할 때 발생하던 에러예요.

출처: Scala 3 Reference

본문

이 에러는 Scala 3.0.0이 릴리스되기 전에 제거되었고, 스칼라 3 컴파일러가 실제로 내보낸 적은 없어요. 빈 파라미터 목록을 가진 implicit 또는 erased 함수 타입을 정의하려 할 때 발생하던 에러였어요.

예시 (Example)

type Contextual[T] = implicit () => T
val x: implicit () => Int
val y: erased () => Int
val z: erased implicit () => Int

에러 (Error)

-- Error: example.scala:1:26 ---------------------------------------------------
1 |type Contextual[T] = implicit () => T
  |                              ^^
  |implicit function type needs non-empty parameter list

설명 (Explanation)

스칼라 3.0.0 이전의 초기 Dotty 버전에서는 implicit 또는 erased 함수 타입의 파라미터 목록을 비워 두는 것이 허용되지 않았어요. 이 제한은 d34b677d88 커밋(2018년 5월)에서 불필요한 제한으로 간주되어 제거되었죠.

당시 에러 메시지는 함수 타입을 명시적인 파라미터로 정의하라고 안내했어요.

type Transactional[T] = implicit Transaction => T
val cl: implicit A => B

스칼라 3.0.0부터는 implicit 및 erased 함수 타입에 빈 파라미터 목록을 허용해서 이 에러는 쓸모없어졌어요.