mirror of
https://github.com/LCPQ/quantum_package
synced 2024-12-23 04:43:50 +01:00
47 lines
537 B
OCaml
47 lines
537 B
OCaml
open Core.Std;;
|
|
|
|
(*
|
|
Type for bits
|
|
==============
|
|
|
|
Zero | One
|
|
|
|
*)
|
|
|
|
type t =
|
|
| One
|
|
| Zero
|
|
with 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
|
|
;;
|
|
|