mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-11-04 05:03:50 +01:00
47 lines
535 B
OCaml
47 lines
535 B
OCaml
|
open Core;;
|
||
|
|
||
|
(*
|
||
|
Type for bits
|
||
|
==============
|
||
|
|
||
|
Zero | One
|
||
|
|
||
|
*)
|
||
|
|
||
|
type t =
|
||
|
| One
|
||
|
| Zero
|
||
|
[@@deriving sexp]
|
||
|
|
||
|
let to_string = function
|
||
|
| Zero -> "0"
|
||
|
| One -> "1"
|
||
|
;;
|
||
|
|
||
|
let and_operator a b =
|
||
|
match a, b with
|
||
|
| Zero, _ -> Zero
|
||
|
| _, Zero -> Zero
|
||
|
| _, _ -> One
|
||
|
;;
|
||
|
|
||
|
let or_operator a b =
|
||
|
match a, b with
|
||
|
| One, _ -> One
|
||
|
| _, One -> One
|
||
|
| _, _ -> Zero
|
||
|
;;
|
||
|
|
||
|
let xor_operator a b =
|
||
|
match a, b with
|
||
|
| One, Zero -> One
|
||
|
| Zero, One -> One
|
||
|
| _, _ -> Zero
|
||
|
;;
|
||
|
|
||
|
let not_operator = function
|
||
|
| One -> Zero
|
||
|
| Zero -> One
|
||
|
;;
|
||
|
|