-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or requestimplementedサンプル実装済みサンプル実装済みrelease-noteリリースノートに反映済みリリースノートに反映済み
Description
3値論理演算子
概要
論理演算のどちらかのオペランドがnullの場合に、3値ロジックを適用して論理演算できるようにしたい。
動機
bool?型を使った3値ロジック演算を使いたいから。
詳細設計
左右両方がbool型(null許容/非許容問わず)またはVAR?型の場合に3値論理演算を行う。
それ以外の型ではINVALID_OPERAND(0x003)にする。
演算子は、!、&、|、^をサポートする。短絡評価はサポートしない。
論理構成
真偽値表
x op y
| x | y | !x | x & y | x | y | x ^ y | ||
|---|---|---|---|---|---|---|---|
| true | true | false | true | true | false | ||
| true | false | false | false | true | true | ||
| true | null | false | null | true | null | ||
| false | true | true | false | true | true | ||
| false | false | true | false | false | false | ||
| false | null | true | false | null | null | ||
| null | true | null | null | true | null | ||
| null | false | null | false | null | null | ||
| null | null | null | null | null | null |
方針
- nullに対するNOT演算は、そのままnullとなる
- XOR演算でxとyどちらかがnullの場合は、nullとなる
- OR、AND演算はクリーネの3値論理に従う
参考
欠点
前例
未確定の設計
Discussion
Metadata
Metadata
Assignees
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or requestimplementedサンプル実装済みサンプル実装済みrelease-noteリリースノートに反映済みリリースノートに反映済み