Programming Macro Tree Transducers - GitHub Pages · Programming Macro Tree Transducers Patrick...

66
university of copenhagen department of computer science Faculty of Science Programming Macro Tree Transducers Patrick Bahr 1 Laurence E. Day 2 1 University of Copenhagen, Department of Computer Science [email protected] 2 University of Nottingham, Functional Programming Laboratory [email protected] FP Lab Away Day, 13th June, 2013 Slide 1

Transcript of Programming Macro Tree Transducers - GitHub Pages · Programming Macro Tree Transducers Patrick...

un i v er s i ty of copenhagen department of computer sc i ence

Faculty of Science

Programming Macro Tree Transducers

Patrick Bahr1 Laurence E. Day2

1University of Copenhagen,Department of Computer [email protected]

2University of Nottingham,Functional Programming [email protected]

FP Lab Away Day, 13th June, 2013

Slide 1

un i v er s i ty of copenhagen department of computer sc i ence

Agenda

1 String Acceptors & String Transducers

2 Tree Acceptors & Tree Transducers

3 Programming with Tree Transducers in Haskell

4 Tree Transducers with Polymorphic State Space

5 Macro Tree Transducers(= Tree Transducers with Accumulation Parameters)

Why Tree Transducers?

• Compositionality deforestation

• Manipulation of transducers

• Composition with state transition functions

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 2

un i v er s i ty of copenhagen department of computer sc i ence

Agenda

1 String Acceptors & String Transducers

2 Tree Acceptors & Tree Transducers

3 Programming with Tree Transducers in Haskell

4 Tree Transducers with Polymorphic State Space

5 Macro Tree Transducers(= Tree Transducers with Accumulation Parameters)

Why Tree Transducers?

• Compositionality deforestation

• Manipulation of transducers

• Composition with state transition functions

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 2

un i v er s i ty of copenhagen department of computer sc i ence

Agenda

1 String Acceptors & String Transducers

2 Tree Acceptors & Tree Transducers

3 Programming with Tree Transducers in Haskell

4 Tree Transducers with Polymorphic State Space

5 Macro Tree Transducers(= Tree Transducers with Accumulation Parameters)

Why Tree Transducers?

• Compositionality deforestation

• Manipulation of transducers

• Composition with state transition functions

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 2

un i v er s i ty of copenhagen department of computer sc i ence

Agenda

1 String Acceptors & String Transducers

2 Tree Acceptors & Tree Transducers

3 Programming with Tree Transducers in Haskell

4 Tree Transducers with Polymorphic State Space

5 Macro Tree Transducers(= Tree Transducers with Accumulation Parameters)

Why Tree Transducers?

• Compositionality deforestation

• Manipulation of transducers

• Composition with state transition functions

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 2

un i v er s i ty of copenhagen department of computer sc i ence

Agenda

1 String Acceptors & String Transducers

2 Tree Acceptors & Tree Transducers

3 Programming with Tree Transducers in Haskell

4 Tree Transducers with Polymorphic State Space

5 Macro Tree Transducers(= Tree Transducers with Accumulation Parameters)

Why Tree Transducers?

• Compositionality deforestation

• Manipulation of transducers

• Composition with state transition functions

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 2

un i v er s i ty of copenhagen department of computer sc i ence

Agenda

1 String Acceptors & String Transducers

2 Tree Acceptors & Tree Transducers

3 Programming with Tree Transducers in Haskell

4 Tree Transducers with Polymorphic State Space

5 Macro Tree Transducers(= Tree Transducers with Accumulation Parameters)

Why Tree Transducers?

• Compositionality deforestation

• Manipulation of transducers

• Composition with state transition functions

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 2

un i v er s i ty of copenhagen department of computer sc i ence

Agenda

1 String Acceptors & String Transducers

2 Tree Acceptors & Tree Transducers

3 Programming with Tree Transducers in Haskell

4 Tree Transducers with Polymorphic State Space

5 Macro Tree Transducers(= Tree Transducers with Accumulation Parameters)

Why Tree Transducers?

• Compositionality deforestation

• Manipulation of transducers

• Composition with state transition functions

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 2

un i v er s i ty of copenhagen department of computer sc i ence

Finite State Automata – On Strings

w o r d

q0 q1 q2 q3 q4 ∈ QF ?

ne w w ε ord

new word

Acceptor

q, s → q′

,w

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 3

un i v er s i ty of copenhagen department of computer sc i ence

Finite State Automata – On Strings

w o r dq0

q1 q2 q3 q4 ∈ QF ?

ne w w ε ord

new word

Acceptor

q, s → q′

,w

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 3

un i v er s i ty of copenhagen department of computer sc i ence

Finite State Automata – On Strings

w o r dq0

q1 q2 q3 q4 ∈ QF ?

ne w w ε ord

new word

Acceptor

q, s → q′

,w

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 3

un i v er s i ty of copenhagen department of computer sc i ence

Finite State Automata – On Strings

w o r dq0 q1

q2 q3 q4 ∈ QF ?

ne w w ε ord

new word

Acceptor

q, s → q′

,w

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 3

un i v er s i ty of copenhagen department of computer sc i ence

Finite State Automata – On Strings

w o r dq0 q1 q2

q3 q4 ∈ QF ?

ne w w ε ord

new word

Acceptor

q, s → q′

,w

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 3

un i v er s i ty of copenhagen department of computer sc i ence

Finite State Automata – On Strings

w o r dq0 q1 q2 q3

q4 ∈ QF ?

ne w w ε ord

new word

Acceptor

q, s → q′

,w

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 3

un i v er s i ty of copenhagen department of computer sc i ence

Finite State Automata – On Strings

w o r dq0 q1 q2 q3 q4

∈ QF ?

ne w w ε ord

new word

Acceptor

q, s → q′

,w

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 3

un i v er s i ty of copenhagen department of computer sc i ence

Finite State Automata – On Strings

w o r dq0 q1 q2 q3 q4 ∈ QF ?

ne w w ε ord

new word

Acceptor

q, s → q′

,w

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 3

un i v er s i ty of copenhagen department of computer sc i ence

Finite State Automata – On Strings

w o r dq0 q1 q2 q3 q4 ∈ QF ?

ne w w ε ord

new word

Acceptor

q, s → q′

,w

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 3

un i v er s i ty of copenhagen department of computer sc i ence

Finite State Automata – On Strings

w o r dq0 q1 q2 q3 q4 ∈ QF ?

ne w w ε ord

new word

Transducer?

q, s → q′

,w

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 3

un i v er s i ty of copenhagen department of computer sc i ence

Finite State Automata – On Strings

w o r dq0 q1 q2 q3 q4

∈ QF ?

ne w w ε ord

new word

Transducer

?

q, s → q′,w

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 3

un i v er s i ty of copenhagen department of computer sc i ence

Finite State Automata – On Strings

w o r dq0 q1 q2 q3 q4

∈ QF ?

ne w w ε ord

new word

Transducer

?

q, s → q′,w

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 3

un i v er s i ty of copenhagen department of computer sc i ence

Finite State Automata – On Strings

w o r dq0 q1 q2 q3 q4

∈ QF ?

ne w w ε ord

new word

Transducer

?

q, s → q′,w

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 3

un i v er s i ty of copenhagen department of computer sc i ence

Finite State Automata – On Strings

w o r dq0 q1 q2 q3 q4

∈ QF ?

ne w w ε ord

new word

Transducer

?

q, s → q′,w

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 3

un i v er s i ty of copenhagen department of computer sc i ence

Now on Trees!

not

and

not

b

or

tt b

q0

q1

q2 q3

q4 q5 q6

q, f → q1, . . . , qn

Often rendered as a rewrite rule:

q(f (x1, . . . , xn))→ f (q1(x1), . . . , qn(xn))

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 4

un i v er s i ty of copenhagen department of computer sc i ence

Now on Trees!

not

and

not

b

or

tt b

q0

q1

q2 q3

q4 q5 q6

q, f → q1, . . . , qn

Often rendered as a rewrite rule:

q(f (x1, . . . , xn))→ f (q1(x1), . . . , qn(xn))

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 4

un i v er s i ty of copenhagen department of computer sc i ence

Now on Trees!

not

and

not

b

or

tt b

q0

q1

q2 q3

q4 q5 q6

q, f → q1, . . . , qn

Often rendered as a rewrite rule:

q(f (x1, . . . , xn))→ f (q1(x1), . . . , qn(xn))

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 4

un i v er s i ty of copenhagen department of computer sc i ence

Now on Trees!

not

and

not

b

or

tt b

q0

q1

q2 q3

q4 q5 q6

q, f → q1, . . . , qn

Often rendered as a rewrite rule:

q(f (x1, . . . , xn))→ f (q1(x1), . . . , qn(xn))

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 4

un i v er s i ty of copenhagen department of computer sc i ence

Now on Trees!

not

and

not

b

or

tt b

q0

q1

q2 q3

q4 q5 q6

q, f → q1, . . . , qn

Often rendered as a rewrite rule:

q(f (x1, . . . , xn))→ f (q1(x1), . . . , qn(xn))

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 4

un i v er s i ty of copenhagen department of computer sc i ence

Now on Trees!

not

and

not

b

or

tt b

q0

q1

q2 q3

q4 q5 q6

q, f → q1, . . . , qn

Often rendered as a rewrite rule:

q(f (x1, . . . , xn))→ f (q1(x1), . . . , qn(xn))

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 4

un i v er s i ty of copenhagen department of computer sc i ence

Now on Trees!

not

and

not

b

or

tt b

q0

q1

q2 q3

q4 q5 q6

q, f → q1, . . . , qn

Often rendered as a rewrite rule:

q(f (x1, . . . , xn))→ f (q1(x1), . . . , qn(xn))

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 4

un i v er s i ty of copenhagen department of computer sc i ence

Tree Transducers

f

. . .

f

q1 q2. . .

qn

q′ q′′

q

q(f (x1, . . . , xn)) → f (q1(x1), . . . , qn(xn))

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 5

un i v er s i ty of copenhagen department of computer sc i ence

Tree Transducers

f

. . .

f

q1 q2. . .

qn

q′ q′′

q

q(f (x1, . . . , xn)) → f (q1(x1), . . . , qn(xn))

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 5

un i v er s i ty of copenhagen department of computer sc i ence

Tree Transducers

f

. . .

f

q1 q2. . .

qn

q′ q′′

q

q(f (x1, . . . , xn)) → t[q′(xi )|q′ ∈ Q, 1 ≤ i ≤ n]

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 5

un i v er s i ty of copenhagen department of computer sc i ence

Example: Negation Normal Form

The setting

• Signature: F = {or/2, and/2, not/1, tt/0, ff/0, b/0}• State space: {q0, q1}

Transduction rules

q0(not(x1))→ q1(x1)

q1(not(x1))→ q0(x1)

q0(and(x1, x2))→ and(q0(x1), q0(x2))

q1(and(x1, x2))→ or(q1(x1), q1(x2))

q0(or(x1, x2))→ or(q0(x1), q0(x2))

q1(or(x1, x2))→ and(q1(x1), q1(x2))

q0(b)→ b

q1(b)→ not(b)

q0(tt)→ tt

q0(ff)→ ff

q1(tt)→ ff

q1(ff)→ tt

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 6

un i v er s i ty of copenhagen department of computer sc i ence

Example: Negation Normal Form

The setting

• Signature: F = {or/2, and/2, not/1, tt/0, ff/0, b/0}• State space: {q0, q1}

Transduction rules

q0(not(x1))→ q1(x1)

q1(not(x1))→ q0(x1)

q0(and(x1, x2))→ and(q0(x1), q0(x2))

q1(and(x1, x2))→ or(q1(x1), q1(x2))

q0(or(x1, x2))→ or(q0(x1), q0(x2))

q1(or(x1, x2))→ and(q1(x1), q1(x2))

q0(b)→ b

q1(b)→ not(b)

q0(tt)→ tt

q0(ff)→ ff

q1(tt)→ ff

q1(ff)→ tt

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 6

un i v er s i ty of copenhagen department of computer sc i ence

Example: Negation Normal Form

The setting

• Signature: F = {or/2, and/2, not/1, tt/0, ff/0, b/0}• State space: {q0, q1}

Transduction rules

q0(not(x1))→ q1(x1)

q1(not(x1))→ q0(x1)

q0(and(x1, x2))→ and(q0(x1), q0(x2))

q1(and(x1, x2))→ or(q1(x1), q1(x2))

q0(or(x1, x2))→ or(q0(x1), q0(x2))

q1(or(x1, x2))→ and(q1(x1), q1(x2))

q0(b)→ b

q1(b)→ not(b)

q0(tt)→ tt

q0(ff)→ ff

q1(tt)→ ff

q1(ff)→ tt

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 6

un i v er s i ty of copenhagen department of computer sc i ence

Example: Negation Normal Form

The setting

• Signature: F = {or/2, and/2, not/1, tt/0, ff/0, b/0}• State space: {q0, q1}

Transduction rules

q0(not(x1))→ q1(x1)

q1(not(x1))→ q0(x1)

q0(and(x1, x2))→ and(q0(x1), q0(x2))

q1(and(x1, x2))→ or(q1(x1), q1(x2))

q0(or(x1, x2))→ or(q0(x1), q0(x2))

q1(or(x1, x2))→ and(q1(x1), q1(x2))

q0(b)→ b

q1(b)→ not(b)

q0(tt)→ tt

q0(ff)→ ff

q1(tt)→ ff

q1(ff)→ tt

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 6

un i v er s i ty of copenhagen department of computer sc i ence

A Run of the Transducer

notq0

and

not

b

or

tt b

andq1

not

b

or

tt b

or

notq1

b

orq1

tt b

or

bq0

and

ttq1

bq1

or

b and

ff not

b

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 7

un i v er s i ty of copenhagen department of computer sc i ence

A Run of the Transducer

notq0

and

not

b

or

tt b

andq1

not

b

or

tt b

or

notq1

b

orq1

tt b

or

bq0

and

ttq1

bq1

or

b and

ff not

b

q0(not(x1))→ q1(x1)

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 7

un i v er s i ty of copenhagen department of computer sc i ence

A Run of the Transducer

notq0

and

not

b

or

tt b

andq1

not

b

or

tt b

or

notq1

b

orq1

tt b

or

bq0

and

ttq1

bq1

or

b and

ff not

b

q1(and(x1, x2))→ or(q1(x1), q1(x2))

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 7

un i v er s i ty of copenhagen department of computer sc i ence

A Run of the Transducer

notq0

and

not

b

or

tt b

andq1

not

b

or

tt b

or

notq1

b

orq1

tt b

or

bq0

and

ttq1

bq1

or

b and

ff not

b

2

q1(not(x1))→ q0(x1)

q1(or(x1, x2))→ and(q1(x1), q1(x2))

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 7

un i v er s i ty of copenhagen department of computer sc i ence

A Run of the Transducer

notq0

and

not

b

or

tt b

andq1

not

b

or

tt b

or

notq1

b

orq1

tt b

or

bq0

and

ttq1

bq1

or

b and

ff not

b

2 3

q0(b)→ b

q1(tt)→ ff

q1(b)→ not(b)Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 7

un i v er s i ty of copenhagen department of computer sc i ence

And now in Haskell

f

. . .

q′ q′′

q

Representation in Haskell

type TransD f q g = ∀a . (q, f a)→ g∗(q, a)

Free Monad of a Functor g

data g∗ a = Re a | In (g (g∗ a))

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 8

un i v er s i ty of copenhagen department of computer sc i ence

And now in Haskell

f

. . .

q′ q′′

q

Representation in Haskell

type TransD f q g = ∀a . (q, f a)→ g∗(q, a)

Free Monad of a Functor g

data g∗ a = Re a | In (g (g∗ a))

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 8

un i v er s i ty of copenhagen department of computer sc i ence

And now in Haskell

f

. . .

q′ q′′

q

Representation in Haskell

type TransD f q g = ∀a . (q, f a)→ g∗(q, a)

Free Monad of a Functor g

data g∗ a = Re a | In (g (g∗ a))

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 8

un i v er s i ty of copenhagen department of computer sc i ence

Example: Substitution

type Var = String

data Sig a = Add a a | Val Int | Let Var a a | Var Var

transsubst :: TransD Sig (Map Var µSig) Sig

transsubst (m,Var v) = case Map.lookup v m ofNothing → iVar vJust t → toFree t

transsubst (m, Let v b s) = iLet v (Re (m, b))(Re (m \ v , s))

transsubst (m,Val n) = iVal ntranssubst (m,Add x y) = Re (m, x) ‘iAdd ‘ Re (m, y)

type TransD f q g = ∀a . (q, f a)→ g∗(q, a)

subst :: Map Var µSig → µSig → µSigsubst = JtranssubstKD

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 9

un i v er s i ty of copenhagen department of computer sc i ence

Example: Substitution

type Var = String

data Sig a = Add a a | Val Int | Let Var a a | Var Var

transsubst :: TransD Sig (Map Var µSig) Sig

transsubst (m,Var v) = case Map.lookup v m ofNothing → iVar vJust t → toFree t

transsubst (m, Let v b s) = iLet v (Re (m, b))(Re (m \ v , s))

transsubst (m,Val n) = iVal ntranssubst (m,Add x y) = Re (m, x) ‘iAdd ‘ Re (m, y)

type TransD f q g = ∀a . (q, f a)→ g∗(q, a)

subst :: Map Var µSig → µSig → µSigsubst = JtranssubstKD

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 9

un i v er s i ty of copenhagen department of computer sc i ence

Example: Substitution

type Var = String

data Sig a = Add a a | Val Int | Let Var a a | Var Var

transsubst :: TransD Sig (Map Var µSig) Sig

transsubst (m,Var v) = case Map.lookup v m ofNothing → iVar vJust t → toFree t

transsubst (m, Let v b s) = iLet v (Re (m, b))(Re (m \ v , s))

transsubst (m,Val n) = iVal ntranssubst (m,Add x y) = Re (m, x) ‘iAdd ‘ Re (m, y)

type TransD f q g = ∀a . (q, f a)→ g∗(q, a)

subst :: Map Var µSig → µSig → µSigsubst = JtranssubstKD

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 9

un i v er s i ty of copenhagen department of computer sc i ence

Example: Substitution

type Var = String

data Sig a = Add a a | Val Int | Let Var a a | Var Var

transsubst :: TransD Sig (Map Var µSig) Sig

transsubst (m,Var v) = case Map.lookup v m ofNothing → iVar vJust t → toFree t

transsubst (m, Let v b s) = iLet v (Re (m, b))(Re (m \ v , s))

transsubst (m,Val n) = iVal ntranssubst (m,Add x y) = Re (m, x) ‘iAdd ‘ Re (m, y)

type TransD f q g = ∀a . (q, f a)→ g∗(q, a)

subst :: Map Var µSig → µSig → µSigsubst = JtranssubstKD

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 9

un i v er s i ty of copenhagen department of computer sc i ence

Non-Example: Inlining

trans inline :: TransD Sig (Map Var µSig) Sigtrans inline (m,Var v) = case Map.lookup v m of

Nothing → iVar vJust e → toFree e

trans inline (m, Let v b s) = Re (m [v 7→ b] , s)trans inline (m,Val n) = iVal ntrans inline (m,Add x y) = Re (m, x) ‘iAdd ‘ Re (m, y)

inline :: µSig → µSiginline = Jtrans inlineKD ∅

Recall the type TransD

type TransD f q g = ∀a . (q, f a)→ g∗(q, a)

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 10

un i v er s i ty of copenhagen department of computer sc i ence

Non-Example: Inlining

trans inline :: TransD Sig (Map Var µSig) Sigtrans inline (m,Var v) = case Map.lookup v m of

Nothing → iVar vJust e → toFree e

trans inline (m, Let v b s) = Re (m [v 7→ b] , s)trans inline (m,Val n) = iVal ntrans inline (m,Add x y) = Re (m, x) ‘iAdd ‘ Re (m, y)

inline :: µSig → µSiginline = Jtrans inlineKD ∅

Recall the type TransD

type TransD f q g = ∀a . (q, f a)→ g∗(q, a)

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 10

un i v er s i ty of copenhagen department of computer sc i ence

Transducers with Polymorphic State Space

The original type TransD

type TransD f q g = ∀a . (q, f a)→ g∗(q, a)

An equivalent representation

type TransD f q g = ∀a.q → f

(q →

a

)

→ g∗(q, a)

Deriving the type TransM

type TransM f q g = ∀ a.q a→ f (q

(g∗

a

)

→ a)→ g∗ a

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 11

un i v er s i ty of copenhagen department of computer sc i ence

Transducers with Polymorphic State Space

The original type TransD

type TransD f q g = ∀a . (q, f a)→ g∗(q, a)

An equivalent representation

type TransD f q g = ∀a.q → f

(q →

a

)

→ g∗(q, a)

Deriving the type TransM

type TransM f q g = ∀ a.q a→ f (q

(g∗

a

)

→ a)→ g∗ a

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 11

un i v er s i ty of copenhagen department of computer sc i ence

Transducers with Polymorphic State Space

The original type TransD

type TransD f q g = ∀a . (q, f a)→ g∗(q, a)

An equivalent representation

type TransD f q g = ∀a.q → f (q → a) → g∗

(q,

a

)

Deriving the type TransM

type TransM f q g = ∀ a.q a→ f (q

(g∗

a

)

→ a)→ g∗ a

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 11

un i v er s i ty of copenhagen department of computer sc i ence

Transducers with Polymorphic State Space

The original type TransD

type TransD f q g = ∀a . (q, f a)→ g∗(q, a)

An equivalent representation

type TransD f q g = ∀a.q → f (q → a) → g∗

(q,

a

)

Deriving the type TransM

type TransM f q g = ∀ a.q a→ f (q

(g∗

a

)

→ a)→ g∗ a

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 11

un i v er s i ty of copenhagen department of computer sc i ence

Transducers with Polymorphic State Space

The original type TransD

type TransD f q g = ∀a . (q, f a)→ g∗(q, a)

An equivalent representation

type TransD f q g = ∀a.q → f (q → a) → g∗

(q,

a

)

Deriving the type TransM

type TransM f q g = ∀ a.q a→ f (q (g∗ a)→ a)→ g∗ a

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 11

un i v er s i ty of copenhagen department of computer sc i ence

Example: Inlining

trans inline :: Trans ′M Sig (Map Var) Sigtrans inline m (Var v) = case Map.lookup v m of

Nothing → iVar vJust e x → e

trans inline m (Let v b s) = s (m [v 7→ b m])trans inline m (Val n) = iVal ntrans inline m (Add x y) = x m ‘iAdd ‘ y m

inline :: µSig → µSiginline = Jtrans inlineKM ∅

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 12

un i v er s i ty of copenhagen department of computer sc i ence

Example: Inlining

trans inline :: Trans ′M Sig (Map Var) Sigtrans inline m (Var v) = case Map.lookup v m of

Nothing → iVar vJust e x → e

trans inline m (Let v b s) = s (m [v 7→ b m])trans inline m (Val n) = iVal ntrans inline m (Add x y) = x m ‘iAdd ‘ y m

inline :: µSig → µSiginline = Jtrans inlineKM ∅

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 12

un i v er s i ty of copenhagen department of computer sc i ence

Macro Tree Transduction Rule Illustrated

f

. . .

f

q2

q

q1

. . .

q3 q4

. . .

type TransM f q g = ∀ a. q a→ f (q (g∗ a)→ a︸ ︷︷ ︸)→ g∗ a

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 13

un i v er s i ty of copenhagen department of computer sc i ence

Macro Tree Transduction Rule Illustrated

f

. . .

f

q2

q

q1

. . .

q3 q4

. . .

type TransM f q g = ∀ a. q a→ f (q (g∗ a)→ a︸ ︷︷ ︸)→ g∗ a

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 13

un i v er s i ty of copenhagen department of computer sc i ence

Macro Tree Transduction Rule Illustrated

f

. . .

f

q2

q

q1

. . .

q3 q4

. . .

type TransM f q g = ∀ a. q a→ f (q (g∗ a)→ a︸ ︷︷ ︸)→ g∗ a

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 13

un i v er s i ty of copenhagen department of computer sc i ence

Macro Tree Transduction Rule Illustrated

f

. . .

f

q2

q

q1

. . .

q3 q4

. . .

type TransM f q g = ∀ a. q a→ f (q (g∗ a)→ a︸ ︷︷ ︸)→ g∗ a

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 13

un i v er s i ty of copenhagen department of computer sc i ence

Conclusion

Why Tree Transducers?

• Compositionality deforestation

• Manipulation of transducers

• Composition with state transition functions

Implementation

> cabal install compdata

Future work• proper formalisation

• monadic transducers

• graph transducers

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 14

un i v er s i ty of copenhagen department of computer sc i ence

Conclusion

Why Tree Transducers?

• Compositionality deforestation

• Manipulation of transducers

• Composition with state transition functions

Implementation

> cabal install compdata

Future work• proper formalisation

• monadic transducers

• graph transducers

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 14

un i v er s i ty of copenhagen department of computer sc i ence

Conclusion

Why Tree Transducers?

• Compositionality deforestation

• Manipulation of transducers

• Composition with state transition functions

Implementation

> cabal install compdata

Future work• proper formalisation

• monadic transducers

• graph transducers

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 14

un i v er s i ty of copenhagen department of computer sc i ence

Bonus Slide: Definition of Macro Tree Transducers

q(f (x1, . . . , xn), y1, . . . , ym)→ ufor each f /n ∈ F

and q/(m + 1) ∈ Q

Where u ∈ RHSn,m, which is defined as follows:

1 ≤ i ≤ m

yi ∈ RHSn,m

g/k ∈ G u1, . . . , uk ∈ RHSn,mg(u1, . . . , uk) ∈ RHSn,m

1 ≤ i ≤ n q′/(k + 1) ∈ Q u1, . . . , uk ∈ RHSn,mq′(xi , u1, . . . , uk) ∈ RHSn,m

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 15

un i v er s i ty of copenhagen department of computer sc i ence

Bonus Slide: Definition of Macro Tree Transducers

q(f (x1, . . . , xn), y1, . . . , ym)→ ufor each f /n ∈ F

and q/(m + 1) ∈ Q

Where u ∈ RHSn,m, which is defined as follows:

1 ≤ i ≤ m

yi ∈ RHSn,m

g/k ∈ G u1, . . . , uk ∈ RHSn,mg(u1, . . . , uk) ∈ RHSn,m

1 ≤ i ≤ n q′/(k + 1) ∈ Q u1, . . . , uk ∈ RHSn,mq′(xi , u1, . . . , uk) ∈ RHSn,m

Patrick Bahr, Laurence E. Day — Programming Macro Tree Transducers — FP Lab Away Day, 13th June, 2013

Slide 15