F#中#seq和seq的区别

Difference between #seq and seq in F#

我想知道#seq 在 F# 交互中的含义 shell。 我有一个带有 2 个参数的 collect 函数,一个函数和一个序列,该函数应用于序列。

let rec collect f sq =
  seq {
    let a = Seq.item 0 sq
    let sq1 = Seq.skip 1 sq
    let ris = f a
    yield! ris
    yield! collect f sq1
  }

当 shell 评估 collect 时,它返回以下签名

val collect: f: ('a -> #seq<'c>) -> sq: seq<'a> -> seq<'c>

在这种情况下,seq 之前的 # 是什么意思?

  • seq<'a>IEnumerable<T>
  • 的 F# 拼写
  • 类型前的#flexible type annotation。这允许您使用任何实现指定接口的类型。