我有这段代码:
let rec collect ( t : BCFile list ) ( acc : Set<BCFile> ) : Set<BCFile> =
match t with
| [] -> acc
| hr::tl -> collect ( tl ) ( Set.union acc ( FindSourceFilesForTarget ( hr ) ) )
let s = collect (Set.toList targets) Set.empty
看起来应该是尾递归,但实际上不是(查看IL代码)。有任何想法为什么没有编译成尾递归?