1
나는 다음과 같은 구현 SML에서 내가 얻을SML : 목록
fun reverse x y =
case x of
[] => y
| x::xs => reverse(xs, x::y)
;
오류 메시지 목록을 반대하려고에 항목을 추가하는 동안 이상한 오류를주는 형식 유추는 꿰 뚫을 :
trial.sml:1.6-4.35 Error: case object and rules don't agree [tycon mismatch]
rule domain: 'Z list * 'Z list
object: ('Z list * 'Z list) * 'Y
in expression:
(case (arg,arg)
of (x,y) =>
(case x
of nil => y
| :: <pat> => reverse <exp>))
trial.sml:1.6-4.35 Error: right-hand-side of clause doesn't agree with function result type [tycon mismatch]
expression: 'Z -> _
result type: 'Y list
in declaration:
reverse = (fn arg => (fn <pat> => <exp>))
그러나 내가 역방향으로 재미있는 기호 (x : '목록, y :'목록)를 바꾼다면 이것이 작동하는 이유는 무엇입니까? 이 형식을 쓸 수있는 방법이있어서 '형식 목록'을 작성해야 할 필요가 없습니까?
오 !! noo 메신저 카레 함수를 쓰려고하지 않았습니다. 왜 혼란스러워하는지 봅니다. 나는 brackes와 쉼표가 차이를 만든다는 것을 몰랐다. 당신의 도움을 주셔서 감사합니다. – Har