목록에서 주어진 입력 요소의 인접 어커런스가 하나가되는 목록을 반환하는 간단한 함수를 작성했습니다.값 제한 및 형식 유추
let rec reduce l =
match l with
| [] -> []
| [x] -> [x]
| x::(y::_ as xs) -> if x = y then
reduce xs
else
x::(reduce xs)
# reduce [1;1;2;2;2;3;3;4;3;3;3];;
- : int list = [1;2;3;4;3].
# reduce [’a’;’a’;’a’;’b’];;
- : char list = [’a’; ’b’].
# reduce [];; // The case
- : ’a list = []
빈 목록을 제외하고 모두 예상대로 작동합니다. []
입력. 고소인이 말합니다 오류 FS0030 : 값 제한. 나는 documentation을 통해 현상에 대해 더 잘 이해하려고 노력했지만, 제대로 이해하기위한 기술을 아직 가지고 있지는 않습니다. 일반 함수가 []
과 함께 대소 문자를 지정해야하는 이유는 무엇입니까? 형식 유추없이 단순히 []
이보고 된 결과를 가져올 수 없습니까? 그리고 마지막으로, 그러한 사건을 포착하기 위해 기능이 어떻게 구조화되어야 하는가?
문제는 '[]'이 (가) '목록'이지만 컴파일러가 'a'가 무엇인지 알아 내야한다는 것입니다. –
@JohnPalmer에게 감사드립니다. – Worice