我的问题可能是深入探讨了F#编译器到底有多聪明。 我有一个类型模块,它扫描配置文件,然后应该提供起始地址和结束地址之间的IP地址范围。,没有一个是缓存的。因此,当我试图访问一个项目或枚举列表时,所有三种解决方案都会重新计算代码以创建列表。我可以通过使用Seq.cache来解决这个问题(并且在需要的时候对序列进行前一次强制转换),结果如下 member __.Range =
GetIpRangeRec star
在Visual中使用F#,我发现自己不得不显式地注释类型,这是我想要或者应该做的。我知道解决这一问题的一些技术,特别是使用优秀的前向管道操作员。但是对的第二个元素(字符串列表)很好,不需要这样的注释。如何使类型检查器看起来可以确定对的第二个类型,而不能确定从单个调用返回的第一个类型?将第二行修改如下,可以解决这个问题:
let