如何崩溃内部错误并强制整体
How to crash on internal bug and force totality
我正在使用 C 和我调用 returns 和 int
的函数来表示 gt、eq 或 lt。我想在 1、0 或 -1 cos 以外的任何情况下崩溃,这些情况永远不会发生。我希望 Idris 将 0、1 和 -1 视为详尽匹配。我试过了
prim__compare : Scalar -> Scalar -> Int
Ord Scalar where
compare x y = case prim__compare x y of
-1 => LT
0 => EQ
1 => GT
_ => idris_crash ""
但我明白了
Error: compare is not covering.
Calls non covering function Builtin.idris_crash
由于崩溃只能是内部错误,所以使用assert_total
是合理的
Ord Scalar where
compare x y = case prim__compare x y of
-1 => LT
0 => EQ
1 => GT
_ => (assert_total idris_crash) ""
我正在使用 C 和我调用 returns 和 int
的函数来表示 gt、eq 或 lt。我想在 1、0 或 -1 cos 以外的任何情况下崩溃,这些情况永远不会发生。我希望 Idris 将 0、1 和 -1 视为详尽匹配。我试过了
prim__compare : Scalar -> Scalar -> Int
Ord Scalar where
compare x y = case prim__compare x y of
-1 => LT
0 => EQ
1 => GT
_ => idris_crash ""
但我明白了
Error: compare is not covering.
Calls non covering function Builtin.idris_crash
由于崩溃只能是内部错误,所以使用assert_total
Ord Scalar where
compare x y = case prim__compare x y of
-1 => LT
0 => EQ
1 => GT
_ => (assert_total idris_crash) ""