1

我是F#的新手,很抱歉,如果这看起来太愚蠢。我试图通过FileSystemWatcher收听文件创建和删除事件。现在我想创建一个观察者来显示基于目录中添加和删除的文件的更改计数。所以每当一个文件被添加到目录时,计数就会增加一个,并在文件被删除时减少。我下面的代码:此表达式预计有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会话

相关问题