gpt4 book ai didi

f# - 类型初始值设定项上的 NullReferenceException

转载 作者:行者123 更新时间:2023-12-04 05:10:39 30 4
gpt4 key购买 nike

我在以下代码中使用 F# 类型和数据结构(我在 Mac 上使用 Monodevelop,这仅发生在 Interactive 中):

type UnbalancedSet<'a> =
| E
| T of UnbalancedSet<'a> * 'a * UnbalancedSet<'a>

let rec insert x = function
| E -> T(E, x, E)
| T(a, y, b) as s ->
if x < y then T(insert x a, y, b)
elif x > y then T(a, y, insert x b)
else s

它适用于简单类型,如 ints 浮点数和字符,但当涉及到字符串或元组时,它会出现以下错误:
let a = insert (3, 9) E;;

System.TypeInitializationException: An exception was thrown by the type initializer for UnbalancedSet`1 ---> System.NullReferenceException: Object reference not set to an instance of an object
at FSI_0004+UnbalancedSet`1[System.Tuple`2[System.Int32,System.Int32]]..cctor () [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at <StartupCode$FSI_0004>.$FSI_0004.main@ () [0x00000] in <filename unknown>:0
at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0
Stopped due to error

我不明白发生了什么。我希望这段代码可以工作,因为类型是可比较的。有什么线索吗?

最佳答案

这看起来像是 MonoDevelop 问题——我可以在 VS2010 的 F# Interactive 中很好地运行您的示例代码:

> let a = insert (3, 9) E;;

val a : UnbalancedSet<int * int> = T (E,(3, 9),E)

除非其他人遇到同样的问题并在此处发布解决方案,否则您应该尝试将其发布到 MonoDevelop 邮件列表和/或询问 GIMPnet IRC 上的 #monodevelop channel 。

http://monodevelop.com/index.php?title=Help_%26_Contact

关于f# - 类型初始值设定项上的 NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14970144/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com