0
와 기능 성분 I 다음 예제를 가지고 있고 그들은 유형이 서로SML : isSome
- isSome;
val it = fn : 'a option -> bool
- SOME;
val it = fn : 'a -> 'a option
- val my_converter = (fn x => if x = 5 then SOME x else NONE);
val my_converter = fn : int -> int option
모두 일부와 대결 않고 옵션을 반환 my_converter하더라도 작동하지 않지만 내가 할 때
다음- fn x => isSome o SOME x;
stdIn:19.9-19.24 Error: operator and operand don't agree [tycon mismatch]
operator domain: ('Z option -> bool) * ('Y -> 'Z option)
operand: ('Z option -> bool) * 'X option
in expression:
isSome o SOME x
왜 유형 오류가 발생합니까?
'isSome o SOME'이 모든 입력에 대해 'true'를 반환하기 때문에, 나는 그것을 사용하는 동기가 보이지 않습니다. –
그건 내가 가장 일반적인 패턴을 보여주기 위해 사용할 수있는 빌트인의 가장 간단한 예제이다. 당신은 조건 기반의 SOME/NONE 쌍과 어떤 조합인가? – Har