하스켈에서 데이터 유형을 정의 할 때 인스턴스를 자동으로 파생하도록 선택할 수 있지만 자동 파생을 연기 할 수 있습니까? 어쩌면 다른 라이브러리에 넣어도됩니까? 하스켈선언 후 자동 인스턴스 파생
자동 유도하는 실시간 보호기입니다 : 여기
은 예입니다!module MoneyModule where
data Money = Money Int
deriving Show
는 지금은 MoneyModule
를 사용하고자하지만, 나 또한 Money
에 대한 Read
예를 원하는 : 나는 GHC 수 있었다 알고있는
module ExternalModule where
instance Read Money where
read = error "Can't this be done automatically instead?"
를하지만 자동으로 파생하는 내가 정말 원하는 것 MoneyModule 작성자가 Read
인스턴스를 자동으로 파생시킨 경우에만 수행됩니다.
내가 알고 :
- 이 누락 된 인스턴스를 패치하여 실제
MoneyModule
에서 문제를 해결하는 것이 좋습니다. - 고아 인스턴스가있는 것이 좋지 않은 것으로 간주됩니다. 인스턴스 선언 은 유형 클래스 또는 데이터 유형이 정의 된 모듈에 배치하는 것이 바람직합니다.
유형 클래스가 데이터 유형과 관련이 없으므로 제 사례를 따르지 못합니다. 나는 타입 클래스 모듈이나 데이터 타입 모듈 인 이 인스턴스를 보유하기를 원하지 않기 때문에 세 번째 라이브러리를 생성 할 것이므로 응용 프로그램에서 인스턴스 선언이 필요하기 때문입니다.