1

F #에 익숙하지 않습니다. 너무 바보스럽게 여겨지면 죄송합니다. FileSystemWatcher을 통해 파일 생성 및 삭제 이벤트를 청취하려고합니다. 이제 디렉터리에 추가되거나 삭제 된 파일을 기반으로 변경 횟수를 표시하는 감시자를 만들고 싶습니다. 따라서 파일이 추가 될 때마다 디렉토리 수가 1 씩 증가하고 파일이 삭제되면 감소합니다. 아래에 내 코드 :이 표현식에는 FSI_0024.xxx 유형이 있어야하지만 여기에는 FSI_0017.xxx 유형이 있습니다.

let watcher = new FileSystemWatcher(@".") 
watcher.EnableRaisingEvents <- true 

let created = watcher.Created 

let deleted = watcher.Deleted 

type Change = 
    | Addition of string 
    | Removal of string 

let a = created |> Observable.map (fun eventArgs -> 
    Addition eventArgs.Name) 

let r = deleted |> Observable.map (fun eventArgs -> 
    Removal eventArgs.Name) 

let changes = Observable.merge a r 

let collector count state = 
    match state with 
    | Addition x   -> count + 1 
    | Removal x   -> count - 1 

let createdCount = 
    changes |> Observable.scan (fun count s -> collector count s) 0 

그러나 다음과 같은 오류를 제공 Observable.scan에 :

This expression was expected to have type 
    FSI_0024.Change  
but here has type 
    FSI_0017.Change 

유형은 동일하지만 난이 FSI_xxxx 부분을 이해하지 않습니다. 무엇이 문제가 될 수 있습니까?

+4

fsi 세션을 재설정하십시오. 문제를 야기하는 일부 오래된 정의가 있습니다. –

+0

@JohnPalmer 시간을 절약 해 주셔서 감사합니다. –

답변

0

컴파일러에서 동일한 유형의 이전 버전을 사용하는 경우 이러한 종류의 오류가 발생합니다.

가장 쉬운 해결책은 FSI 세션을 다시 시작하는 것입니다.