'`#에 대한'일치 할 수 없습니다 이 중 Exp
(Show 인스턴스가 있음)을 얻으려고했다. 나는 응용 프로그램에서 haskell 유형에 대한 정보를 삽입하여 문자열이 아닌 실제 데이터로 사용할 수 있도록이 작업을 수행하고 있습니다.종류`* 도대체 여기 무슨 일
내 목표는 다음과 같다 :
이info :: Info
info = $(reify ''Show >>= dataToExpQ (const Nothing))
난 정말 그 오류 메시지를 이해하지 못하고, '#'은 어쨌든 무엇인가? #
이있는 경우 # -> #
또는 * -> #
도 있습니까? 종류와 관련된 종류와 관련된 무언가가 유형과 관련이 있습니까 (그것이 무엇인지는 모르겠지만).
좋아, 나는 GHC이 종류의 계층 구조를 가지고 있으며, 그`# '은 언 박싱 종류의 특별한 종류 이니까 이해한다. 모두 좋고 좋지만 왜이 오류가 나타 납니까? 어쩌면 박스가없는 타입이 genercis에서 잘 작동하지 않을 수 있습니까?
컴파일러가 수행하는 최적화가 아닌 박스 화되지 않은 유형을 고려할 것이기 때문에 이것이 나에게 아직 의미가 있는지 확신 할 수 없습니다. 또한 데이터 인스턴스가 존재하는 경우 데이터 구조에 포함될 수있는 모든 유형이 있어야한다고 생각했습니다.
추가 조사시 나는 Names이 문제가 될 것이라고 생각합니다. dataToExpQ를 우회하는 방법이 있습니까? 어쨌든 그 논쟁을 어떻게 사용합니까?
'# '은 박스 처리되지 않은 유형입니다. http://stackoverflow.com/a/3034295/700253 – Vitus
힌트를 주셔서 감사합니다. 그래서 : 문제를 해결하는 방법 :-)? – scravy