같은 모듈에 중복 identifier 금지.하고싶으면 interface로 만들거나, 다른 모듈(네임스페이스)에 넣거나.만약 한 파일에서 임포트한 서로 다른 모듈의 identifier가 중복되면 타입추론으로 맞춰보고, 그래도 확정이 안되면 컴파일 에러. 필요할 때만 명시적으로 네임스페이스 지정.
ㅇㅈ
+연산자 오버로드 한다고 +함수 오버로딩해서 만들게 아니라 Add<Foo>랑 Add<Bar> 구현시켜야됨 ㅇ
내가 알기로 3번 되는게 idris 뿐인데, dependent type이라 그런지 타입추론이 잘 안되서 어차피 타입 명세 거의 다 써야됨 ㅋㅋㅋㅋㅋ
3번 Rust 되는데
아 타입추론은 안되네
그런 디자인 언어 중에 흥한거 뭐있냐
idris가 되는데, 흥하지가 않음 ㅋㅋㅋㅋㅋ
글쓴이 언어 몇개함?ㄷㄷ 별 희한한 언어 다 배우시나봐여
별로 많이 안함. C Python Haskell 은 계속 써서 나름 할줄 알고, C++ Java Fortran Scheme는 대충 써보다 접음. Haskell 에서 파생한 언어중에 Idris라고 있어서 최근에 좀 찾아본것 뿐임.
이게 고딩이냐
코딩좀 해본 다른 고딩이랑 별 차이 없는데
와 고딩이라니 존경합니다 - dc App
코틀린이네
아 ㄹㅇ? 되게 잘 해놨나보네
코틀린 대충 찾아봤는데, 오버로딩에 아무 제한 없는것 같은데..?
첫 문장을 무시하다니 내가 난독이었네. 근데 모듈 내부에선 오버로딩을 막고 모듈 외부에서 허용하는 게 의미가 있음? 오버로딩을 쓰고 싶으면 임포트를 좌라락 나열하게 해서 기피하게 하는 거?
기본적으로 허용하지 않아야 한다고 생각하지만 서로 다른 라이브러리 쓰다보면 다른 모듈 이름하고 겹칠때도 있잖아. 그럴때 명시적인 qualifying을 최대한 피하게 해주는 규칙임.
기본적으로 허용하지 않는건, 같은 모듈에서 오버로딩 된 identifier를 구분하는 방법이 타입 밖에 없으니까. 이러면 명시적으로 구분하기도 힘들고.