2010-04-12 4 views
1

다음 코드 : (F 번호 : 내부 기능에 구문 오류

nth.fs :

exception NoElements of string 

let nth(k, list) = 
    let rec loop count list = 
     match list with 
     | head :: _ when count = k -> head 
     | _ :: tail when count <> k -> loop (count+1) tail 
     | [] -> raise (NoElements("No Elements")) 
    loop 0 list 
;; 
printfn "%A" (nth(2, [1; 1; 2; 3; 5; 8])) 

2010 비주얼 스튜디오의 Mac에서 컴파일 다음과 같은 오류를 생성합니다,하지만 10,0) : 오류 FS0191 : 구문 오류.

nth.fs (4,4) : 오류 FS0191 :이 'let'과 일치하는 'in'이 없습니다.

답변

4

당신이이 아니라

#light 

(코드의 상단에 경량 구문 지시어를 사용하고 있는지 확인 컴파일러의 구버전에 필요하며, newer version을 가져 오십시오.)

+0

그러나 가장 최근 버전의 F #을 사용하고 있다면'# light'가 필요하지 않습니다. (맥에서 제대로 작동하는지 모르겠지만, 그렇지 않다면 다음으로 문제를보고하십시오. _fsbugs (at) microsoft.com_). 최신 버전을 사용하는 것이 좋습니다 :-) –

+0

예,이 버전은 분명히 매우 오래된 것입니다 - 오늘 RTM으로 업그레이드하십시오! http://blogs.msdn.com/dsyme/archive/2010/04/12/f-2-0-released-as-part-of-visual-studio-2010.aspx – Brian

+0

ㅎ, 내가 작업 한 이래로 내 PC뿐만 아니라 VS.Net2010에서 게으른 될거야 ... darwinports 강제로 방법을 1.9.4.19보다 최신 릴리스를 얻을 수 있나요 ??? –

0

줄을 들여 쓰려면 match 줄을 들여 써야합니다.

목록 요소는 세미콜론으로 구분해야합니다. 6 개 튜플을 포함하는 하나의 요소로 구성된 목록을 가지고 있습니다. 그것은 당신의 맥이 F 번호의 일부 훨씬 나이 버전이 가능

exception NoElements of string 

let nth(k, list) = 
    let rec loop count list = 
     match list with 
     | head :: _ when count = k -> head 
     | _ :: tail when count <> k -> loop (count+1) tail 
     | [] -> raise (NoElements("No Elements")) 
    loop 0 list 

printfn "%A" (nth(2, [1; 1; 2; 3; 5; 8])) 

가 : 여기

는 작업 버전입니까? fsc.exe는 어떤 버전을보고합니까? (아주 아주 오래된 경우, 첫 번째 줄 "#light"을 추가하려고합니다.)

+0

아, 이미 내 코드에 있었지만 심하게 옮겼습니다. 내 예제를 수정했습니다. –