Это не с "the pattern is expected to be formed with a constructor (of datavtype)
", так как он соответствует специальному синтаксису free () для линейных конструкторов, а не отрицательного знака.
#include "share/atspre_staload.hats"
implement main0() =
case ~1 of
| ~1 => println!("ok")
| _ => ()
Сбоем с "operator fixity cannot be resolved
».Это не помогает добавлять имена или делать двоичный оператор.
#include "share/atspre_staload.hats"
implement main0() =
case ~1 of
| -1 => println!("ok")
| _ => ()
Сбой, так как переменная в case
вводит новую привязку, не связанную с привязкой, уже находящейся в области видимости:
#include "share/atspre_staload.hats"
implement main0() =
let
val negative_one = ~1
in
case ~2 of
| negative_one => println!("unintend match")
| _ => () // error: this pattern match clause is redundant
end
Это самое близкое, что мы можем получить?Насколько менее производительный это?
#include "share/atspre_staload.hats"
implement main0() =
let
val negative_one = ~1
in
ifcase
| negative_one = ~1 => println!("this works")
| _ => ()
end