형식 변수를 무시하고 형식이 동일한 지 여부를 확인하는 함수를 작성하려고합니다 (SML의 올바른 용어인지 확실하지 않음). 이 함수는 여러 데이터 유형에서 작동하는 것이 바람직합니다.polyEqual없이 SML 사용자 지정 데이터 형식이 같음
그래서, 내가있는 경우 :
데이터 형식 D = A를 | int의 B;
myEqual A A
, myEqual (B 1) (B 1)
및 myEqual (B 1) (B 2)
모든 사실 반환하고, myEqual A (B 1)
는 false를 반환합니다.
내 생각은 fun myEqual a b = a = b;
과 같이 구현했습니다. 그러나 이것은 두 변수의 인스턴스 변수를 비교합니다. 이는 내가 원하지 않는 변수이므로 myEqual (B 1) (B 2)
은 false를 반환합니다.
나는이 같은이 특정 데이터 유형에 대한 데이터
fun myEqual (B _) (B _) = true
| myEqual A A = true
| myEqual _ _ = false;
그러나 이것은 단지 작품을 패턴 매칭을 사용하여이 경우에 구현 될 수 있다는 것을 알고있다.
SML에서 유형 평등 만 검사하지만 인스턴스 변수는 확인하지 않는 작업이 있습니까?
또는 요약하면 번호 : –
SML은 그보다 더 강력한 보장을 제공합니다. 컴파일 타임에 항상 모든 표현식의 유형을 알고 있습니다. –