Development Tip

"단품 다형성"이란 무엇이며 어떻게 이점을 얻을 수 있습니까?

yourdevel 2020. 11. 15. 11:53
반응형

"단품 다형성"이란 무엇이며 어떻게 이점을 얻을 수 있습니까?


그의 이야기에서 간단한 손쉬운 릭 히키는 "에 대해 이야기 다형성 일품 요리 (비디오에 30:00에 대해)". 같은 맥락에서 그는 Haskell의 Type Class 와 Clojure의 Multi-Methods (및 프로토콜) 도 언급합니다 .

나는 이러한 개념에 익숙하지 않기 때문에 단순성 을 달성하려고 할 때 유용성을 이해하고 싶습니다 . 저는 특히 Scala 에서이 개념의 예나 쇼케이스에 관심이 있습니다.


당신이 취할 수 일품 다형성을 같이 수요에 다형성 .

Clojure 커뮤니티는 Clojure가 다중 다형성 전략을 지원한다는 사실 때문에 다형성 이라는 용어를 자랑스럽게 생각합니다 . 그들 중 일부는 다음과 같습니다.

  • 프로토 타입 기반 다형성

  • 상속 다형성

    이것은 Java에서 사용하는 다형성 전략입니다. Clojure는이를 프록시로 지원합니다. Java interop을 수행 할 때 유용합니다.

  • 실험 계획안

    Clojure에 대한 프로토콜은 Haskell에 대한 TypeClass와 같습니다.

  • 다중 방법

    프로토콜은 첫 번째 인수의 유형에 따라 다형성 디스패치를 ​​제공하지만 다중 메소드는 메소드의 (모든) 인수의 모든 기능을 기반으로 디스패치 할 수있는 훨씬 더 유연합니다.

다형성 a la carte 는 "귀하의 경우에 가장 적합한 다형성 전략을 선택하십시오. 모두 도구 상자에 있습니다."

TypeClass암시 적을 사용하여 Scala에서 패턴을 구현할 수 있습니다 . 실제 사례를 원한다면 Scalaz 소스를 읽어보십시오 . Scala는 언어 수준에서 다중 방법을 지원하지 않지만 곧 출시 될 2.10 매크로의 도움으로 가능하다고 생각합니다.

이점에 관해서는 TypeClass 및 Multimethod와 같은 고급 다형성 전략이 표현식 문제를 해결하는 데 도움이 될 수 있습니다 .

"목표는 기존 코드를 다시 컴파일하지 않고 정적 유형 안전성 (예 : 캐스트 없음)을 유지하면서 데이터 유형에 새 케이스를 추가하고 데이터 유형에 대한 새 함수를 추가 할 수있는 경우에 따라 데이터 유형을 정의하는 것입니다."

BTW,이 질문은 하나의 StackOverflow 질문에 맞추기에는 너무 큽니다. 제 제안은 이러한 개념에 익숙해지면 그 유용성을 이해하게 될 것입니다.

참고 URL : https://stackoverflow.com/questions/13553100/what-is-polymorphism-a-la-carte-and-how-can-i-benefit-from-it

반응형