【问题标题】:F#, the value or constructor 'List' is not definedF#,未定义值或构造函数“列表”
【发布时间】:2023-11-24 23:14:01
【问题描述】:

我从一本关于 F# 的书中复制了这段代码。编译器应该创建一个泛型函数。

相反,我收到一个错误

“FS0039: 值或构造函数 'List' 未定义。”

为什么?

let createList(first, second) = 
    let output = List()
    output.Add(first)
    output.Add(second)
    output

// expected output below
// val createList : first:'a * second:'a -> List<'a>

【问题讨论】:

    标签: f# f#-interactive


    【解决方案1】:

    我在脚本中添加了这一行

    open System.Collections.Generic 
    

    与 C# 不同,Visual Studio F# 不擅长告诉您何时需要添加这样的 open 语句。

    【讨论】:

    • 实际上 VSCode 中的 ionide 会建议打开 System.Collections.Generic 命名空间。但是,F# 中的这种类型的 List 用法不是惯用的,可能会造成混淆。最好使用ResizeArray,它是C# List 的同义词,无需另开命名空间。
    • Visual Studio 还将建议此命名空间,此外还有一个代码修复程序,如果未定义该行,将在事后添加该行。