Motivation Patternology Applications Implementation
Plaid: Pattern Language for Abstract Datatypes
Austin Clements Irene Zhang Dan Ports Friday, May 11, 2007
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Pla i d: Pattern Language for Abstract Datatypes Austin Clements - - PowerPoint PPT Presentation
Motivation Patternology Applications Implementation Pla i d: Pattern Language for Abstract Datatypes Austin Clements Irene Zhang Dan Ports Friday, May 11, 2007 Austin Clements, Irene Zhang, Dan Ports Pla i d: Pattern Language for Abstract
Motivation Patternology Applications Implementation
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation
( d e f i n e ( computer? datum ) ( and ( p a i r ? datum ) ( eq? ( car datum ) ’ ∗computer∗ ) ) ) ( d e f i n e computer−model t h i r d ) ( d e f i n e computer−os second ) ( d e f i n e ( match : make−computer? p a t t e r n ) ( and ( p a i r ? p a t t e r n ) ( eq? ( car p a t t e r n ) ’ make−computer ) ) ) ( d e f i n e match : make−computer−model second ) ( d e f i n e match : make−computer−os t h i r d ) ( d e f i n e ( match : make−computer model−comb os−comb) ( d e f i n e ( match data d i c t i o n a r y succeed ) ( and ( computer? data ) (model−comb ( computer−model data ) d i c t i o n a r y ( lambda ( new−dict n ) (os−comb ( computer−os data ) new−dict succeed ) ) ) ) ) match ) ( d e f i n e ( compile−match−make−computer pat use−env loop ) ‘( match : make−computer ,( loop ( match : make−computer−model pat )) ,( loop ( match : make−computer−os pat ) ) ) ) ( eq−put! ’ make−computer ’ pattern−keyword compile−match−make−computer ) Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation ( d e f i n e ( computer? datum ) ( and ( p a i r ? datum ) ( eq? ( car datum ) ’ ∗computer∗ ) ) ) ( d e f i n e computer−model t h i r d ) ( d e f i n e computer−os second ) ( d e f i n e ( match : make−computer? p a t t e r n ) ( and ( p a i r ? p a t t e r n ) ( eq? ( car p a t t e r n ) ’ make−computer ) ) ) ( d e f i n e match : make−computer−model second ) ( d e f i n e match : make−computer−os t h i r d ) ( d e f i n e ( match : make−computer model−comb os−comb) ( d e f i n e ( match data d i c t i o n a r y succeed ) ( and ( computer? data ) (model−comb ( computer−model data ) d i c t i o n a r y ( lambda ( new−dict n ) (os−comb ( computer−os data ) new−dict succeed ) ) ) ) ) match ) ( d e f i n e ( compile−match−make−computer pat use−env loop ) ‘( match : make−computer ,( loop ( match : make−computer−model pat )) ,( loop ( match : make−computer−os pat ) ) ) ) ( eq−put! ’ make−computer ’ pattern−keyword compile−match−make−computer )
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
1 Motivation 2 Patternology
3 Applications 4 Implementation
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructor-Oriented Pattern Syntax Abstraction, Abstraction, Abstraction Embedding Patterns in Scheme Pro-Choice Patterns
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructors in Plaid Deconstructors in Plaid Imagination in Plaid
1 Motivation 2 Patternology 3 Applications
4 Implementation
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructors in Plaid Deconstructors in Plaid Imagination in Plaid
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructors in Plaid Deconstructors in Plaid Imagination in Plaid
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructors in Plaid Deconstructors in Plaid Imagination in Plaid
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Constructors in Plaid Deconstructors in Plaid Imagination in Plaid
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Building Patterns Unification
1 Motivation 2 Patternology 3 Applications 4 Implementation
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Building Patterns Unification
( p a t t e r n : d e c o n s t r u c t o r ( lambda () ( constructor−>d e c o n s t r u c t o r cons )) ( l i s t ( p a t t e r n : l i t e r a l 1) ( p a t t e r n : d e c o n s t r u c t o r ( lambda () ( constructor−>d e c o n s t r u c t o r cons )) ( l i s t ( p a t t e r n : v a r i a b l e a ) ( p a t t e r n : l i t e r a l ( ) ) ) ) ) ) Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Building Patterns Unification
( d e f i n e ( compile−pattern expr env ) ( cond (( n u l l a r y ? expr ) ‘( p a t t e r n : l i t e r a l , expr )) (( quoted? expr ) ‘( p a t t e r n : l i t e r a l ’ , ( cadr expr ) ) ) (( v a r i a b l e ? expr ) ‘( p a t t e r n : v a r i a b l e ’ , expr )) (( w i l d c a r d ? expr ) ‘( p a t t e r n : w i l d c a r d )) (( a p p l i c a t i o n ? expr ) ‘( p a t t e r n : d e c o n s t r u c t o r ( lambda () ( constructor−>d e c o n s t r u c t o r ,( close−syntax ( car expr ) env ) ) ) ( l i s t . ,(map ( lambda ( arg ) ( compile−pattern arg env )) ( cdr expr ) ) ) ) ) (( pcase? expr ) ‘( p a t t e r n : pcase ,( compile−pattern ( cadr expr ) env ) ( l i s t ,@(map ( lambda ( c l a u s e ) ‘( p a t t e r n : pcase : c l a u s e ,( compile−pattern ( car c l a u s e ) env ) ,( compile−pattern ( cadr c l a u s e ) env ) ) ) ( cddr expr ) ) ) ) ) ( e l s e ( e r r o r : invalid−pattern−syntax ” p a t t e r n ” expr ) ) ) ) Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Building Patterns Unification
’(1 a )
( p a t t e r n : d e c o n s t r u c t o r ( lambda () ( constructor−>d e c o n s t r u c t o r cons )) ( l i s t ( p a t t e r n : l i t e r a l 1) ( p a t t e r n : d e c o n s t r u c t o r ( lambda () ( constructor−>d e c o n s t r u c t o r cons )) ( l i s t ( p a t t e r n : v a r i a b l e a ) ( p a t t e r n : l i t e r a l ( ) ) ) ) ) )
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Building Patterns Unification
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Building Patterns Unification
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Building Patterns Unification
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Building Patterns Unification
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Building Patterns Unification
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Building Patterns Unification
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Building Patterns Unification
( d e f i n e ( unify−compound−deconstructor var dtor
env ) ( r e c e i v e ( rename−table renamed−body ) ( alpha−rename−pattern ( d e c o n s t r u c t o r : compound/body dtor ) ( improper−list−to−proper−list ( d e c o n s t r u c t o r : compound/ arguments dtor ) ) ) ( l e t (( env ( u n i f y renamed−body
env ) ) ) ( l e t l p (( env env ) ( f o r m a l s ( d e c o n s t r u c t o r : compound/ arguments dtor )) ( args ( p a t t e r n : d e c o n s t r u c t o r / args var ) ) ) ( cond (( and ( n u l l ? f o r m a l s ) ( n u l l ? args )) env ) (( n u l l ? f o r m a l s ) ( e r r o r ”Wrong number
arguments ” )) (( n u l l ? args ) ( e r r o r ”Wrong number
arguments ” )) (( p a i r ? f o r m a l s ) ( l p ( u n i f y ( car args ) ( p a t t e r n : v a r i a b l e ( cdr ( assq ( car f o r m a l s ) rename−table ) ) ) env ) ( cdr f o r m a l s ) ( cdr args ) ) ) ( e l s e ( u n i f y ( p a t t e r n : v a r i a b l e ( cdr ( assq f o r m a l s rename−table ) ) ) ( list −to−patt er n−list args ) env ) ) ) ) ) ) ) Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Building Patterns Unification
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Building Patterns Unification
Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes
Motivation Patternology Applications Implementation Building Patterns Unification
( d e f i n e ( unify−pcase var
env ) ( l e t (( var ( alpha−rename−pcase var ) ) ) ( l e t l p (( c l a u s e s ( p a t t e r n : pcase / c l a u s e s var ) ) ) ( i f ( n u l l ? c l a u s e s ) (( unifier−environment / f a i l env )) ( l e t (( env1 ( call−with−current−continuation ( lambda ( k ) ( unifier−environment / new−failure−continuation env ( lambda () ( k #f ) ) ) ) ) ) ) ( i f ( f a l s e ? env1 ) ( l p ( cdr c l a u s e s )) ( let∗ (( c l a u s e ( car c l a u s e s )) ( env2 ( u n i f y ( p a t t e r n : pcase : c l a u s e / consequent c l a u s e )
env1 )) ( env3 ( u n i f y ( p a t t e r n : pcase : c l a u s e / c o n d i t i o n c l a u s e ) ( p a t t e r n : pcase / v a r i a b l e var ) env2 ) ) ) env3 ) ) ) ) ) ) ) Austin Clements, Irene Zhang, Dan Ports Plaid: Pattern Language for Abstract Datatypes