Design Patterns as Higher−Order Datatype−Generic Programs
The aim of this tutorial is to draw together ideas from the Design Patterns community (the Gang of Four: Gamma, Helm, Johnson, Vlissides) and the Functional Programming world (eg Bird, Meertens, Hughes). In particular, the thesis is that whereas design patterns must be expressed extra-linguistically...
Main Author: | |
---|---|
Format: | Conference item |
Published: |
Glasgow
2005
|
_version_ | 1826298745741901824 |
---|---|
author | Gibbons, J |
author_facet | Gibbons, J |
author_sort | Gibbons, J |
collection | OXFORD |
description | The aim of this tutorial is to draw together ideas from the Design Patterns community (the Gang of Four: Gamma, Helm, Johnson, Vlissides) and the Functional Programming world (eg Bird, Meertens, Hughes). In particular, the thesis is that whereas design patterns must be expressed extra-linguistically (as prose, diagrams, examples) in object-oriented languages, they may be captured directly as abstractions using higher-order operators in functional programming languages. Therefore, they may be reasoned about, type-checked, applied and reused, just as any other abstractions may be. We argue this case by developing the idea of higher-order operators, specifically for capturing patterns of computation in programs. We then bring this around to show how the intentions behind a number of the Gang of Four patterns—such as Composite, Visitor, Iterator, and Builder—have higher-order operators as their analogues in functional languages. |
first_indexed | 2024-03-07T04:51:30Z |
format | Conference item |
id | oxford-uuid:d51f7d43-a922-44a7-9398-18d6af894b21 |
institution | University of Oxford |
last_indexed | 2024-03-07T04:51:30Z |
publishDate | 2005 |
publisher | Glasgow |
record_format | dspace |
spelling | oxford-uuid:d51f7d43-a922-44a7-9398-18d6af894b212022-03-27T08:23:42ZDesign Patterns as Higher−Order Datatype−Generic ProgramsConference itemhttp://purl.org/coar/resource_type/c_5794uuid:d51f7d43-a922-44a7-9398-18d6af894b21Department of Computer ScienceGlasgow2005Gibbons, JThe aim of this tutorial is to draw together ideas from the Design Patterns community (the Gang of Four: Gamma, Helm, Johnson, Vlissides) and the Functional Programming world (eg Bird, Meertens, Hughes). In particular, the thesis is that whereas design patterns must be expressed extra-linguistically (as prose, diagrams, examples) in object-oriented languages, they may be captured directly as abstractions using higher-order operators in functional programming languages. Therefore, they may be reasoned about, type-checked, applied and reused, just as any other abstractions may be. We argue this case by developing the idea of higher-order operators, specifically for capturing patterns of computation in programs. We then bring this around to show how the intentions behind a number of the Gang of Four patterns—such as Composite, Visitor, Iterator, and Builder—have higher-order operators as their analogues in functional languages. |
spellingShingle | Gibbons, J Design Patterns as Higher−Order Datatype−Generic Programs |
title | Design Patterns as Higher−Order Datatype−Generic Programs |
title_full | Design Patterns as Higher−Order Datatype−Generic Programs |
title_fullStr | Design Patterns as Higher−Order Datatype−Generic Programs |
title_full_unstemmed | Design Patterns as Higher−Order Datatype−Generic Programs |
title_short | Design Patterns as Higher−Order Datatype−Generic Programs |
title_sort | design patterns as higher order datatype generic programs |
work_keys_str_mv | AT gibbonsj designpatternsashigherorderdatatypegenericprograms |