我想知道是否可以在haskell的警卫中使用警卫。
像这样 :

analyser modele instr
  |  instr == NoCom  = (modele, "No command" ,[])
  |  instr == ComK   | (read comargstr1) == 0 = function1 modele Nothing
                     | (read comargstr1) == 1 = function1 modele (Just (read comargstr1))
                     | (read comargstr1) <  0 = function1 modele (Just (read comargstr2))
                     | otherwise              = function2 modele
  | othercases...
  | othercases...


在我的示例中,我根本无法在防护的第一列中求值(读取comargstr1),因为comargstr1并不总是返回兼容的可读字符串(致命错误)

我没有设法在警卫中使用警卫!

是否有可能做到这一点(是否有技巧,选项,特殊功能……)还是完全不可能?

预先感谢您的帮助!

最佳答案

布局不适用于后卫,因此对齐它们的方式也无关紧要。

您能做的最接近的就是将MultiWayIf用于第二级防护。

09-03 19:13