Embedding Classical and Quantum Circuits in Haskell

Similar documents
Conservation of Information

Discrete Quantum Theories

Theory of Computation

Topic 1: Propositional logic

Discrete Quantum Theories

Languages, regular languages, finite automata

Quantum Effects. Juliana K. Vizzotto 1 Thorsten Altenkirch 2. Amr Sabry January Yale CS Colloquium Page 1

Self-reproducing programs. And Introduction to logic. COS 116, Spring 2012 Adam Finkelstein

CS Lecture 19: Logic To Truth through Proof. Prof. Clarkson Fall Today s music: Theme from Sherlock

EEE130 Digital Electronics I Lecture #4

Halting and Equivalence of Program Schemes in Models of Arbitrary Theories

FINAL EXAM CHEAT SHEET/STUDY GUIDE. You can use this as a study guide. You will also be able to use it on the Final Exam on

THEORETICAL COMPUTER SCIENCE FOR THE WORKING CATEGORY THEORIST

CS/COE1541: Introduction to Computer Architecture. Logic Design Review. Sangyeun Cho. Computer Science Department University of Pittsburgh

NP-completeness. Chapter 34. Sergey Bereg

Section 1 (closed-book) Total points 30

Sequential Logic (3.1 and is a long difficult section you really should read!)

Computer Science. 19. Combinational Circuits. Computer Science COMPUTER SCIENCE. Section 6.1.

MA/CSSE 474 Theory of Computation

Undecidable Problems. Z. Sawa (TU Ostrava) Introd. to Theoretical Computer Science May 12, / 65

Preliminaries to the Theory of Computation

Harvard School of Engineering and Applied Sciences CS 152: Programming Languages

Quantum computing! quantum gates! Fisica dell Energia!

THE LOGIC OF COMPOUND STATEMENTS

Notes for Lecture 3... x 4

CS/COE0447: Computer Organization and Assembly Language

CS/COE0447: Computer Organization

From Greek philosophers to circuits: An introduction to boolean logic. COS 116, Spring 2011 Sanjeev Arora

Turing Machines Part Three

Before We Start. The Pumping Lemma. Languages. Context Free Languages. Plan for today. Now our picture looks like. Any questions?

Unit 8A Computer Organization. Boolean Logic and Gates

Adequate set of connectives, logic gates and circuits

CSE 200 Lecture Notes Turing machine vs. RAM machine vs. circuits

Confusion of Memory. Lawrence S. Moss. Department of Mathematics Indiana University Bloomington, IN USA February 14, 2008

1 Alphabets and Languages

A categorical model for a quantum circuit description language

Performance Enhancement of Reversible Binary to Gray Code Converter Circuit using Feynman gate

Computer Science Introductory Course MSc - Introduction to Java

Digital Logic Design: a rigorous approach c

Seminaar Abstrakte Wiskunde Seminar in Abstract Mathematics Lecture notes in progress (27 March 2010)

Complexity and NP-completeness

CS 361 Meeting 26 11/10/17

CSE370: Introduction to Digital Design

Logic design? Transistor as a switch. Layered design approach. CS/COE1541: Introduction to Computer Architecture. Logic Design Review.

1.1 The Boolean Bit. Note some important things about information, some of which are illustrated in this example:

Models. Models of Computation, Turing Machines, and the Limits of Turing Computation. Effective Calculability. Motivation for Models of Computation

(a) Definition of TMs. First Problem of URMs

Unit 4: Computer as a logic machine

Reversible Circuit Using Reversible Gate

CS/COE0447: Computer Organization

CSE 20. Lecture 4: Introduction to Boolean algebra. CSE 20: Lecture4

Hardware Design I Chap. 2 Basis of logical circuit, logical expression, and logical function

Computational Tasks and Models

Theoretical Computer Science

Outline. policies for the first part. with some potential answers... MCS 260 Lecture 10.0 Introduction to Computer Science Jan Verschelde, 9 July 2014

Halting and Equivalence of Schemes over Recursive Theories

Computer Organization: Boolean Logic

DIGITAL CIRCUIT LOGIC BOOLEAN ALGEBRA

Applications. Smartphone, tablet, game controller, antilock brakes, microprocessor, Wires

where Q is a finite set of states

20. Combinational Circuits

COSC 243. Introduction to Logic And Combinatorial Logic. Lecture 4 - Introduction to Logic and Combinatorial Logic. COSC 243 (Computer Architecture)

A Short Introduction to Hoare Logic

Lecture 3: Semantics of Propositional Logic

Hoare Logic: Reasoning About Imperative Programs

CSC9R6 Computer Design. Practical Digital Logic

Notes for Lecture 3... x 4

Lecture Notes On THEORY OF COMPUTATION MODULE -1 UNIT - 2

CM10196 Topic 2: Sets, Predicates, Boolean algebras

Chapter 3. Cartesian Products and Relations. 3.1 Cartesian Products

Control gates as building blocks for reversible computers

Binary Decision Diagrams and Symbolic Model Checking

Doc112: Hardware. Department of Computing, Imperial College London. Doc112: Hardware Lecture 1 Slide 1

Fuzzy and Rough Sets Part I

cse303 ELEMENTS OF THE THEORY OF COMPUTATION Professor Anita Wasilewska

XI STANDARD [ COMPUTER SCIENCE ] 5 MARKS STUDY MATERIAL.

Course Runtime Verification

Logic in Automatic Verification

CS 226: Digital Logic Design

Number System. Decimal to binary Binary to Decimal Binary to octal Binary to hexadecimal Hexadecimal to binary Octal to binary

Finite State Machines CS 64: Computer Organization and Design Logic Lecture #15 Fall 2018

Computer organization

Synchronous Sequential Circuit

Boolean Algebra & Digital Logic

Definition: Alternating time and space Game Semantics: State of machine determines who

UNIT-I. Strings, Alphabets, Language and Operations

Typed Arithmetic Expressions

Automata-based Verification - III

ECE 250 / CPS 250 Computer Architecture. Basics of Logic Design Boolean Algebra, Logic Gates

Quantum gate. Contents. Commonly used gates

Logical AND. Logical XOR

Hypercomputation and the Grand Challenge in Non-Classical Computation

An algebraic characterization of unary two-way transducers

Supplementary Material for MTH 299 Online Edition

Introduction to Turing Machines. Reading: Chapters 8 & 9

Geometric Steiner Trees

Chapter 2 Algorithms and Computation

Floating Point Representation and Digital Logic. Lecture 11 CS301

Combinational Logic. By : Ali Mustafa

A COMPARISON OF LOGICAL EFFICIENCY

Transcription:

Embedding Classical and Quantum Circuits in Haskell Amr Sabry School of Informatics and Computing Indiana University July 26, 2012 Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 1 / 41

Motivation Quantum mechanics is the most accurate physical theory of our universe. Use quantum mechanics to rethink classical computing Physical laws as algorithms Conservation of Information Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 2 / 41

Physical Laws as Algorithms The laws of physics are essentially algorithms for calculation. These algorithms are significant only to the extent that they are executable in our real physical world. Our usual laws of physics depend on the mathmatician s real number system. With that comes the presumption that given any accuracy requirement, there exist a number of calculations steps, which if executed, will satisfy that accuracy requirement. But the real world is unlikely to supply us with unlimited memory of unlimited Turing machine tapes, Therefore, continuum mathematics is not executable, and physical laws which invoke that can not really be satisfactory. They are references to illusionary procedures. Rolf Landauer, The physical nature of information, Physics Letters A 217 (1996) pp. 188-193: Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 3 / 41

Physical Laws as Algorithms The laws of physics are essentially algorithms for calculation. These algorithms are significant only to the extent that they are executable in our real physical world. Our usual laws of physics depend on the mathmatician s real number system. With that comes the presumption that given any accuracy requirement, there exist a number of calculations steps, which if executed, will satisfy that accuracy requirement. But the real world is unlikely to supply us with unlimited memory of unlimited Turing machine tapes, Therefore, continuum mathematics is not executable, and physical laws which invoke that can not really be satisfactory. They are references to illusionary procedures. Rolf Landauer, The physical nature of information, Physics Letters A 217 (1996) pp. 188-193: Use Computer Science to understand Physics Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 3 / 41

Conservation of Information Ed Fredkin pursued the idea that information must be finite in density. One day, he announced that things must be even more simple than that. He said that he was going to assume that information itself is conserved. You re out of you mind, Ed. I pronounced. That s completely ridiculous. Nothing could happen in such a world. There couldn t even be logical gates. No decisions could ever be made. But when Fredkin gets one of his ideas, he s quite immune to objections like that; indeed, they fuel him with energy. Soon he went on to assume that information processing must also be reversible and invented what s now called the Fredkin gate Marvin Minsky, Feynman and Computation: Exploring the Limits of Computers: Feynman and Cellular Vacuum, Perseus Books 1999. Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 4 / 41

Conservation of Information Ed Fredkin pursued the idea that information must be finite in density. One day, he announced that things must be even more simple than that. He said that he was going to assume that information itself is conserved. You re out of you mind, Ed. I pronounced. That s completely ridiculous. Nothing could happen in such a world. There couldn t even be logical gates. No decisions could ever be made. But when Fredkin gets one of his ideas, he s quite immune to objections like that; indeed, they fuel him with energy. Soon he went on to assume that information processing must also be reversible and invented what s now called the Fredkin gate Marvin Minsky, Feynman and Computation: Exploring the Limits of Computers: Feynman and Cellular Vacuum, Perseus Books 1999. Use Physics to understand Computer Science Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 4 / 41

Applications Having a model of computation that is in harmony with the laws of physics would have many applications: Entropy analysis of circuits Biochemical models of computations Information-flow security Differential privacy Massive concurrency Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 5 / 41

Strategy and outline of this talk Will only present some basic ideas showing how to bring the worlds of traditional computing and physics close to each other Will use the programming language Haskell to distill a model of both reversible classical circuits and quantum circuits The model is executable; it highlights the similarities and differences between classical and quantum computing Part of a much larger project that we can discuss offline: several students; several publications (RC 2011, RC 2012, POPL 2012); NSF grant. Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 6 / 41

Haskell Strongly-typed functional language Rich type system Functions are first-class values, i.e., can be passed as arguments and returned as results Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 7 / 41

Basic Haskell types Base types: Bool, Int, Char, String, etc. Pair types: (a,b) (Disjoint) union types: Either a b Function types: a -> b List types: [a] Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 8 / 41

Basic Haskell types and terms Base types: True :: Bool False :: Bool 3 :: Int c :: Char "hello" :: String Pair types: (3,True) :: (Int,Bool) (Disjoint) union types: Left 3 :: Either Int Bool Right False :: Either Int Bool Function types: \x -> x+3 :: Int -> Int \x -> if x then 3 else 4 :: Bool -> Int List types: [3,4,5,6,7] :: [Int] Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 9 / 41

Example Programs All right triangles with sides less than or equal to 10 and whose perimeter is 24: [ ] (a,b,c) c <- [1..10], b <- [1..c], a <- [1..b], a ˆ 2 + b ˆ 2 == c ˆ 2, a+b+c == 24 All prime numbers up to m: primesto m = 2 : sieve [3,5..m] where sieve [] = [] sieve (p:xs) = p : sieve (xs \\ [p,p+2*p..m]) Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 10 / 41

Philosophy A proof of P in propositional logic corresponds to a Haskell program of type P. Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 11 / 41

Propositional Logic Propositions: P ::= A P P P P P P P P Proofs can be represented in many ways, e.g., via truth tables: A B A B A B A B A B F F F F T T F T F T T F T F F T F F T T T T T T Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 12 / 41

Curry-Howard Isomorphism Each proposition corresponds to a Haskell type: P Q corresponds to the pair type (a,b) P Q corresponds to the disjoint union type Either a b P Q corresponds to the function type a -> b If a proposition is true, then there is a Haskell term of the corresponding type; If a proposition is false, then there is no Haskell term of the corresponding type; Programs are proofs Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 13 / 41

Programs are proofs A program of type: (a,b) is a pair of proofs; one that proves a and one that proves b Either a b is either a proof of a or a proof of b; we distinguish the two cases by annotating the first proof with Left and the second proof with Right; a -> b is a procedure that converts proofs of a to proofs of b Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 14 / 41

Examples ((A B) C) (A (B C)) is true. Here is a Haskell term of the required type: p :: ((a,b) -> c) -> (a -> (b -> c)) p f = \ a -> \ b -> f (a,b) -- could be written -- p f a b = f (a,b) A B is in general not true; there is no Haskell term of type a -> b for all a and b Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 15 / 41

Haskell as a host language for domain-specific embedded languages Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 16 / 41

Embedding Languages Just like we can define customized logics to reason about a particular domain, we can also define customized sublanguages in Haskell to model a particular domain. Basic idea: represent the data in the new domain using special Haskell types; represent the operations in the new domain using operations on the special types; restrict the operations on the special types to be only the ones provided above Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 17 / 41

Key Technologies Type Classes Monads Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 18 / 41

Type Classes Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 19 / 41

Type Classes Group types and operations (similar to classes in OO languages). A type a together with a constant unit :: a and a binary operation binop :: a -> a -> a: class Monoid a where unit :: a binop :: a -> a -> a Given a list of elements of type a we can fold the list starting with unit and applying binop: acclist :: Monoid a => [a] -> a acclist [] = unit acclist (x:xs) = x binop acclist xs Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 20 / 41

Instances of Type Classes The type Int can be made an instance of the Monoid class with 1 as the unit and multiplication as the binop: instance Monoid Int where unit = 1 binop = (*) The type String can be made an instance of the Monoid class with the empty string as the unit and concatenation as the binop: instance Monoid String where unit = "" binop = (++) The type of Int -> Int functions can be made an instance of the Monoid class with the identity function as the unit and composition as the binop: data Fun = Fun (Int -> Int) ap (Fun f) a = f a instance Monoid Fun where unit = Fun (\x -> x) binop (Fun f) (Fun g) = Fun (f. g) Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 21 / 41

Type classes The same function acclist can be used at different types to fold over lists of different kinds of elements: testint :: Int testint = acclist [1..10] teststring :: String teststring = acclist ["abc","def","gh"] testfun :: Int testfun = ap (acclist [Fun succ, Fun fact]) 3 where fact n = acclist [1..n] Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 22 / 41

Monads Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 23 / 41

Monads Define a new layer of computations that is distinct from the functional layer; return allows you to move to the monad layer; bind or >>= or do allows you to sequence computations in the monad layer; generally impossible to move back from the monad layer to the functional layer Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 24 / 41

Monads Just a type class: class Monad m where return :: a -> m a (>>=) :: m a -> (a -> m b) -> m b Special syntax: instead of writing: e1 >>= \x1 -> e2 >>= \x2 -> return e we can write: do x1 <- e1 x2 <- e2 return e Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 25 / 41

Monads: Non-determinism Find all the triples of numbers [1..7] that add up to 15: findnums :: [(Int,Int,Int)] findnums = do a <- [1..7] -- generate choices b <- [1..7] c <- [1..7] if (a+b+c == 15) then return (a,b,c) -- success else [] -- backtrack Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 26 / 41

Monads: State nodups is a pure function; internally it uses a hashtable and performs allocation, reading, and writing of pointers. All these effects are tracked and encapsulated by the type system. nodups :: [String] -> [String] nodups ss = runst (do ht <- HT.new loop ht ss) where loop :: HT. HashTable s String () -> [String] -> ST s [String] loop ht [] = return [] loop ht (s:ss) = do seen <- HT.lookup ht s case seen of Nothing -> do HT.insert ht s () rss <- loop ht ss return (s : rss) Just _ -> loop ht ss Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 27 / 41

Classical Circuits Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 28 / 41

Data and wires The type of classical values: data Classical a = CVal a An abstract type of wires: class Eq a => Wire a where basis :: [a] instance Wire Bool where basis = [False,True] instance (Wire a, Wire b) => Wire (a,b) where basis = [ (a,b) a <- basis, b <- basis ] instance (Wire a, Wire b, Wire c) => Wire (a,b,c) where basis = [ (a,b,c) a <- basis, b <- basis, c <- basis ] Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 29 / 41

Parallel and Sequential Composition of Circuits -- parallel composition class Parallel m where (<*>) :: m a -> m b -> m (a,b) instance Parallel Classical where (CVal b1) <*> (CVal b2) = CVal (b1,b2) -- sequential composition class Sequential m where vreturn :: Wire a => a -> m a (@>>=) :: (Wire a, Wire b) => m a -> (a -> m b) -> m b instance Sequential Classical where vreturn b = CVal b (CVal b) @>>= f = f b Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 30 / 41

Classical Circuits A abstract hardware circuit embedded in a Haskell type: data Circuit m a where CPrm :: Wire a => Int -> (a -> m a) -> Circuit m a Cseq :: Wire a => Circuit m a -> Circuit m a -> Circuit m a Cpar :: (Wire a, Wire b) => Circuit m a -> Circuit m b -> Circuit m (a,b) Cmux :: Wire a => Circuit m a -> Circuit m a -> Circuit m (Bool,a) The circuit description is parametrized over the type of wires Wire and the special monad m that specifies how the circuits are composed in sequence and in parallel. Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 31 / 41

Classical Circuits: Examples class (Parallel m, Sequential m) => CMonad m instance CMonad Classical notprm :: CMonad m => Bool -> m Bool notprm b = vreturn (not b) idprm :: (CMonad m, Wire a) => a -> m a idprm a = vreturn a xorc :: CMonad m => Circuit m (Bool,Bool) xorc = Cmux (CPrm 1 notprm) (CPrm 1 idprm) toffolic :: CMonad m => Circuit m (Bool,(Bool,Bool)) toffolic = Cmux xorc (CPrm 2 idprm) Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 32 / 41

Reversible Circuits Toffoli gate (or Fredkin gate) are universal and, or, nand, nor, etc. can be simulated Simulation idea: use reversible circuit; fix some inputs to constants; and ignore some outputs Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 33 / 41

Classical Circuits: Interpretation meaningc :: (CMonad m, Wire a) => Circuit m a -> a -> m a meaningc (CPrm _ f) a = f a meaningc (Cseq c1 c2) a = meaningc c1 a @>>= \b -> meaningc c2 b meaningc (Cpar c1 c2) (a,b) = meaningc c1 a <*> meaningc c2 b meaningc (Cmux c1 c2) (b,bs) = if b then vreturn True <*> meaningc c1 bs else vreturn False <*> meaningc c2 bs Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 34 / 41

Example test1 :: Bool -> Bool -> Bool -> Classical (Bool,(Bool,Bool)) test1 b1 b2 b3 = meaningc toffolic (b1,(b2,b3)) Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 35 / 41

Quantum Circuits Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 36 / 41

One slide type PA = Complex Double type Vec a = a -> PA data Quantum a = QVal (Vec a) untag (QVal f) = f instance Parallel Quantum where (QVal v1) <*> (QVal v2) = QVal (\ (a1,a2) -> v1 a1 * v2 a2) instance Sequential Quantum where vreturn b = QVal (\a -> if a==b then 1 else 0) (QVal v) @>>= f = QVal (\b -> sum [ v a * untag (f a) b a <- basis ]) instance CMonad Quantum Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 37 / 41

Explanation A quantum computation over booleans manipulates values which are vectors from booleans to complex probability amplitudes. Quantum states are unit vectors (and identified up to global phase) All the differences between classical and quantum computation are abstracted in the choice of the type parameter m Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 38 / 41

Examples test2 = QVal v @>>= meaningc toffolic where v (False,(False,False)) = 1 v _ = 0 test3 = QVal v @>>= meaningc toffolic where v (False,(False,False)) = 1 v (True,(True,True)) = 1 v _ = 0 Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 39 / 41

Conclusions Haskell is the language of choice of much interesting research. Check recent editions of the Haskell Symposium and International Conference on Functional Programming (ICFP) Quantum computing, at its core, is not much different from classical computing with (special) computational effects; Ideas can be further developed to design quantum programming languages Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 40 / 41

More Visit my web page: http://www.cs.indiana.edu/ sabry Amr Sabry ( School of Informatics and Computing Embedding Indiana University Classical and ) Quantum Circuits in Haskell July 26, 2012 41 / 41