0

我正在运行 PAKCS Curry 编译器,版本 3.3.0。

考虑这个取自 Curry 教程的非确定性函数:

data Person = Joan | Luc | Richard

data Day = Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday

oncall :: Person -> Day
oncall Joan = Monday
oncall Joan = Wednesday
oncall Richard = Monday
oncall Luc = Tuesday

当我编译它时,我看到了这个警告:

foo.curry:6:1-9:20 Warning:
    Function `oncall' is potentially non-deterministic due to overlapping rules
   | 
 6 | oncall Joan = Monday
   | ^^^^^^^^^^^^^^^^^^^^...

如果我错误地编写了一个非确定性函数,警告可能会有所帮助。另一方面,如果我故意编写了一个非确定性函数,那么警告就会很烦人,如果我编写一个包含许多此类函数的大型程序,那么我最终可能会收到很多警告。

有什么方法可以将函数标记为故意不确定的,所以警告会消失吗?

我在 PAKCS 手册中看到我可以通过以下方式关闭所有此类警告

{-# OPTIONS_FRONTEND -Wno-overlapping #-}

但这似乎不是一个好主意,因为如果我偶然编写了一个非确定性函数,这个警告似乎很有用。

4

0 回答 0