ML에서 프로그래밍을하지는 않았지만 함수 프로그래밍을 공부하고 있습니다. ML은 일반적으로 타입에 대해 정말로 중요 합니다만, 엄격한 타입 제한을 피하기 위해 타입 캐스팅을 할 수 있는지 알고 싶었습니다. ML이 잘못된 유형의 기회를 줄이려고했기 때문에 그렇지 않습니까, 아니면 구현되지 않은 것입니까?ML에서 타이 캐스팅 할 수 있습니까?
답변
"유형 캐스팅"은 많은 다른 것들을 의미 할 수 있습니다. 완전히 다른 사용 사례가 3 가지 이상 있습니다.
특정 유형 (예 : 숫자 유형) 간의 변환. 그것은 각각의 기능을 통해 ML에서 가능합니다. 단지 "캐스트"로 가장하지 않습니다.
앞뒤로 가기 유형에서 앞뒤로 캐스팅 (예 :
Object
또는void*
). 이는 표현력이없는 유형의 시스템을 해결하기위한 해킹 일뿐입니다. 다행히 ML에는 적절한 파라 메트릭 다형성과 대수 데이터 유형이 있으므로 일반적으로이를 필요로하지 않습니다.유형 시스템을 완전히 파괴하면서 저급 수준의 속임수를 사용합니다. 그것은 일반적으로 ML에서 지원되지 않습니다. 안전하고 높은 수준의 언어로 설계 되었기 때문입니다.
특히 어떤 유형의 캐스트에 관심이 있습니까? 그 이유는 무엇입니까?
답변 해 주셔서 감사합니다. 나는 첫번째 탄환 점에 대해서 이야기하고 있었다. 나는 두 번째 총알을 타입 캐스팅이라고 생각하지 못했습니다. 나는 당신이 ML에서 [1, 2, 3]과 같은 것을 가질 수 있다는 것을 보았 기 때문에 흥미 롭습니다. 그러나 ([1, [1, 2], 3) 두 번째 목록의 요소가 같은 유형이 아닙니다. 그래서 저는 [1, 2.0, 3]과 같은 예를 생각했습니다. 기술적으로는 효과가 없지만 캐스트가 쉽게 해결할 수 있습니다. – JustBlossom
@ LearnLanguages96 귀하의 사례는 ML과 구별 할 수 없습니다. 목록의 두 번째 항목이 첫 번째 예제와 다른 유형을 가지고 있기 때문에 실패합니다. 두 번째 항목은'int'입니다. 두 번째 항목은'진짜 '입니다. 그러나 중요한 것은 일치하지 않는다는 것입니다. SML은 표준에서 그런 것들을 허용하기에는 너무 예쁘다. 그러나 [SML/NJ의 Unsafe 구조] (http://www.smlnj.org/doc/SMLofNJ/pages/)와 같이 구현에 따른 캐스트가있다. unsafe.html) 또는 [MLtonStructure in MLton] (http://mlton.org/MLtonStructure)을 참조하십시오. –
@ LearnLanguages96, 귀하의 예는 두 번째 요점입니다. 대개 대수 데이터 형식을 사용합니다. 귀하의 예제는 트리를 설명하기로되어 있다고 가정하므로'datatype 'a tree = L of a'a | B '[L 1, B [L 1, L 2], L 3]'이라고 쓰면된다. 아니면 당신이 진정으로 이기종 목록을 원한다면, 당신은 또한 데이터 형을 사용할 수 있습니다 :'datatype item = N of int | S 문자열 | bool val xs = [N 5, B true, S "boo", N 6]. 다행스럽게도 실제로 후자의 경우는 거의 필요하지 않습니다. –
- 1. 인라인 타이 캐스팅 (파이썬)
- 2. Java에서 Generics를 어떻게 캐스팅 할 수 있습니까?
- 3. NSDictionary valueForKey에서 프리미티브를 캐스팅 할 수 있습니까?
- 4. 왜 sockaddr을 sockaddr_in으로 캐스팅 할 수 있습니까
- 5. GameKit의 peerID를 uint32_t로 캐스팅 할 수 있습니까?
- 6. 주어진 유형으로 어떻게 캐스팅 할 수 있습니까?
- 7. 개체를 System.Windows.DataObject.DataStore.DataStoreEntry로 캐스팅 할 수 있습니까?
- 8. comObject를 Excel.ApplicationClass로 캐스팅 할 수 있습니까?
- 9. C#에서 const를 캐스팅 할 수 있습니까?
- 10. 어떻게 개체를 동적으로 캐스팅 할 수 있습니까?
- 11. 캐스팅 할 수 없습니다
- 12. ML에서 재귀 함수 반환
- 13. ML에서 예외를 잡는 중
- 14. 활동을 캐스팅 할 수 없습니다.
- 15. '캐스팅 할 수 없습니다'클래스를 캐스팅 할 때 오류가 발생했습니다.
- 16. 개체를 캐스팅 할 수 없습니다 ...
- 17. 나중에 캐스팅 할 변수에 열거 형을 배치 할 수 있습니까?
- 18. 표준 ML에서 역 추적
- 19. IAsyncResult.AsyncState를 캐스팅 할 수 없습니다.
- 20. 개체를 캐스팅 할 수 없습니다.
- 21. MapView를 캐스팅 할 수 없습니다.
- 22. 조각에서 캐스팅 할 수 없음
- 23. 어떻게 Azure ML에서 gensim 패키지를 사용할 수 있습니까?
- 24. 부울 할 문자열에서 캐스팅 할 수 없습니다
- 25. 비교기의 FIFO 타이 브레이커?
- 26. 클래스 캐스팅 예외 : RelativeLayout을 com.a.a.ba로 캐스팅 할 수 없습니다.
- 27. 타이 캐스팅에 대한 질문
- 28. 타이 문자 표시 ????? JSP
- 29. 엑셀 랭킹 타이 문제
- 30. 자식에서 부모로 캐스팅 할 수없는 정적 캐스팅
ML에 관한 모든 내용은 고의적입니다. :) –