숫자가있는이 메서드를 작성하면 목록에 값에 따라 올바른 위치에 숫자가 삽입 된 새 목록이 반환됩니다. (I은 삽입 정렬을하고 있어요.)목록의 항목 비교
let rec insertinto number numbers =
match numbers with
| [] -> [number]
| head::tail -> if head > number then number::numbers else head::(insertinto number tail)
F #이 방법의 유형으로 추측 :
val insertinto : 'a -> 'a list -> 'a list when 'a : comparison
내가
를 얻을 내가[4; 10; 15] |> insertinto 12
으로이 방법을 테스트하는 경우
val it : int list = [4; 12; 10; 15]
분명히 잘못되었습니다. 'head> number'비교가 올바르게 작동하지 않습니다.
것은 그것이 내가 숫자 매개 변수의 유형을 지정해야 작동하도록하려면 다음
let rec insertinto number numbers: int list =
모든 일을하지만, 내가 INT 목록에 모든 시간을 사용 싶지 않다, 나는 일이 원하는 모든 유형의 목록이 있습니다. 형식이 비교를 구현하는 한 확실히 작동합니다.
왜 이것이 일반 목록이 아닌 int 목록에서 작동합니까? 내가 뭘 놓치고 있니?
편집
확인,이 모노에만 문제가 나타납니다.
저의 작품 ... 어떤 플랫폼을 사용하고 있습니까? – kvb
형식 선언이없는 원래 함수가 제대로 작동합니다. 우연히 fsi로 Visual Studio에서이 작업을 수행하고 있습니까? Visual Studio를 사용하고, 텍스트를 선택하고, alt-enter를 사용하여 fsi 창으로 보내고 싶습니다. 가끔씩 오류가 있습니다. VS 편집기에서 업데이트하지만 fsi로 다시 보내야한다는 것을 잊지 마십시오. 그래서 두 개가 동기화되지 않았고 fsi에서 함수를 다시 실행할 때 약간의 불안감을 느낄 수 있습니다 (특히 월요일 아침의 첫 번째 항목). 보고있는 행동을 확실하게 재현 할 수 있습니까? – Juliet
그건 재미 있어요. 나는 Mac에서 Monodevelop로 이것을하고있다. –