Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

比較演算子をパターンマッチのscrutineeにかけた場合の特殊なdesugar #298

Open
KisaragiEffective opened this issue Oct 22, 2023 · 0 comments

Comments

@KisaragiEffective
Copy link
Owner

KisaragiEffective commented Oct 22, 2023

a <=> b match {
   Ordering::Less => todo!(),
   Ordering::Equal => todo!(),
   Ordering::More => todo!(),
}

は、例えばabがIEEE 754準拠の浮動小数点数におけるNaNだった場合どの結果にもならないのが自然と考えられる。
厳密にはtotalOrder演算が無視されているが、nullsFirstかnullsLastかのような観点と同様に「自然な演算」ではないと考えられる。

そこで、Ordを実装しないがPartialOrdは実装する型同士の宇宙船演算子がUnit型を返すmatch式に現れた際は、(Rustで表現すると) 以下のようにdesugarされるべきだと考えられる:

a.partial_cmp(&b) match {
    Some(ordering) => ordering match { /* above code */ }
    None => (),
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant