몇 시간 전 하스켈 확장 (링크를 찾을 수 없음) 중 하나에서 발생했으며 recently in Ur 이름 (예 : 레코드 필드의 이름)이 종류를 형성한다는 것을 알았습니다. 왜 유형 추상화만으로 충분하지 않은지 설명 할 수 있습니까?이름이 유형이 아닌 종류를 형성하는 이유는 무엇입니까?
답변
대답은 유형에 나타날 수 있기 때문에 간단합니다. 따라서 유형 수준에서 살아야합니다 (그렇지 않으면 종속 유형이 필요합니다). 그리고 그들은 유형 수준에서 살기 때문에 종류별로 분류됩니다.
레코드 시스템은 값, 유형 및 (어쩌면) 종류에 대한 규칙을 정의합니다. 사용되는 규칙은 설계중인 유형 시스템과 설계자가 달성하고자하는 사항에 따라 다릅니다.
예. 하스켈에서, 음반은 다음과 같습니다
- 값 (접근 기능)
- 그 값은이 유형 (예 :
Record -> Int
) - 이러한 유형의 종류 (
*
)
다른 기록 시스템이 할 수있는 유형 또는 종류의 시스템을 다른 용도로 사용하십시오.
라벨을 별도의 종류로 분류하면 유형 검사기가 라벨을 특수하게 처리 할 수 있습니다. 자동 렌즈, 또는 범용 기능에 맞지 않는 레코드 구성 (전체 성)과 관련된 증명.
하스켈에서 종류 시스템을 사용하는 예는 "박스 화되지 않은 유형"의 사용입니다. 다음은이 유형이 있습니다
-
일정한 값으로
- 다른 런타임 표현
- 다른 결합 형태 (예를 들어, 힙에 할당 할 수 없음)
정기적으로 혼합에서 언 박싱 유형을 유지하려면 유형에 따라 종류이 주어 지므로 컴파일러는 분리를 추적 할 수 있습니다.
음반사 이름을 표현할 때 다른 종류를 사용해야한다는 것을 의미하는 마술은 없습니다. 언어 디자이너가 Ur-와 같은 의존형 언어로 만들 수있는 선택 일뿐입니다. Twelf, 그것은 유용한 구분 일 수 있습니다.
감사합니다. 상자가없는 유형에 대한 예제는 깨달음입니다. – Fixpoint
- 1. System.Enum이 값 유형이 아닌 이유는 무엇입니까?
- 2. subprocess.Popen 클래스의 이름이 Subprocess가 아닌 이유는 무엇입니까?
- 3. "decimal"이 유효한 속성 매개 변수 유형이 아닌 이유는 무엇입니까?
- 4. Byte가 열거 형의 기본지지 유형이 아닌 이유는 무엇입니까?
- 5. 모델의 이름이 "user_model.rb"가 아닌 "user.rb"인 이유는 무엇입니까?
- 6. 반환 유형이 의미가없는 이유는 무엇입니까?
- 7. 서식을 다시 형성하는 방법은 무엇입니까?
- 8. 이름이 아닌 정의 오류가
- 9. current_user가 아닌 이유는 무엇입니까?
- 10. 플라이급 디자인 패턴의 이름이 된 이유는 무엇입니까?
- 11. 이 유형이 일치하지 않는 이유는 무엇입니까?
- 12. 응용 프로그램의 기본 유형이 변경된 이유는 무엇입니까?
- 13. 참조 유형이 힙에 저장되는 이유는 무엇입니까?
- 14. 네이티브 반환 유형이 System.InvalidProgramException을 throw하는 이유는 무엇입니까?
- 15. 오이 훅 메서드가 소문자가 아닌 이유는 무엇입니까?
- 16. 상속과 일반 (이름이 같고 유형이 같은) 열은 무엇입니까?
- 17. 이미지가 링크가 아닌 이유는 무엇입니까?
- 18. fstat가 stat가 아닌 이유는 무엇입니까?
- 19. Hashtable이 PascalCase가 아닌 이유는 무엇입니까?
- 20. 추상 필드가 아닌 이유는 무엇입니까?
- 21. AllowPartiallyTrustedCallers가 기본값이 아닌 이유는 무엇입니까?
- 22. CGContextRef가 객체가 아닌 이유는 무엇입니까?
- 23. JSON이있는 SOAP가 아닌 이유는 무엇입니까?
- 24. ValueError : trigger가 아닌 이유는 무엇입니까?
- 25. OrderedSetValueForKey가 아닌 mutableOrderedSetValueForKey가있는 이유는 무엇입니까?
- 26. jQuery.parseJSON이 함수가 아닌 이유는 무엇입니까?
- 27. 꼬리 재귀가 아닌 이유는 무엇입니까?
- 28. ActiveRecord가 모듈이 아닌 이유는 무엇입니까?
- 29. || = 유효한 연산자가 아닌 이유는 무엇입니까?
- 30. 안드로이드에서 문자열을 형성하는 방법은
이 대답은 모든 것을 내 머리 속에 넣었습니다. 감사! – Fixpoint