함수 타입에는 비어 있지 않은 파라미터 목록이 필요했어요
함수 타입에는 비어 있지 않은 파라미터 목록이 필요했어요 (E085: Function Type Needs Non-Empty Parameter List)
이 에러는 Scala 3.0.0이 릴리스되기 전에 제거된 에러라, 실제로 스칼라 3 컴파일러가 내보낸 적은 없어요. 초기 Dotty 버전에서 빈 파라미터 목록을 가진 implicit 또는 erased 함수 타입을 정의하려 할 때 발생하던 에러예요.
본문
이 에러는 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 함수 타입에 빈 파라미터 목록을 허용해서 이 에러는 쓸모없어졌어요.