1: \begin{thebibliography}{10}
2:
3: \bibitem{ACPP91}
4: M.~Abadi, L.~Cardelli, B.~Pierce, and G.~Plotkin.
5: \newblock {Dynamic Typing in a Statically Typed Language}.
6: \newblock {\em ACM Transactions on Programming Languages and Systems},
7: 13(2):237--268, Apr. 1991.
8:
9: \bibitem{ACPR92}
10: M.~Abadi, L.~Cardelli, B.~Pierce, and D.~R{\'{e}}my.
11: \newblock {Dynamic Typing in Polymorphic Languages}.
12: \newblock In {\em {Proceedings of the 1992 {ACM} Workshop on {ML} and its
13: Applications}}, pages 92--103, San Francisco, June 1992. Association for
14: Computing Machinery.
15:
16: \bibitem{BKKR01}
17: P.~Borovansk\'y, C.~Kirchner, H.~Kirchner, and C.~Ringeissen.
18: \newblock {Rewriting with strategies in {{\sf ELAN}}: a functional semantics}.
19: \newblock {\em {International Journal of Foundations of Computer Science}},
20: 12(1):69--95, 2001.
21:
22: \bibitem{BKV01}
23: M.~Brand, P.~Klint, and J.~Vinju.
24: \newblock Term rewriting with traversal functions.
25: \newblock Technical Report SEN-R0121, CWI, July 2001.
26:
27: \bibitem{CS92}
28: J.~Cockett and D.~Spencer.
29: \newblock Strong categorical datatypes {I}.
30: \newblock In R.~Seely, editor, {\em Proceedings Int.\ Summer Category Theory
31: Meeting, Montr{\'e}al, Qu{\'e}bec, 23--30 June 1991}, volume~13 of {\em
32: Canadian Mathematical Society Conf.\ Proceedings}, pages 141--169. American
33: Mathematical Society, Providence, RI, 1992.
34:
35: \bibitem{DV01}
36: E.~Dolstra and E.~Visser.
37: \newblock {First-class rules and generic traversal}.
38: \newblock Technical report, Universiteit Utrecht, UU-CS-2001-38, 2001.
39: \newblock Technical report.
40:
41: \bibitem{GirardPhD}
42: J.-Y. Girard.
43: \newblock {\em {Interpr\'{e}tation fonctionelle et \'{e}limination des coupures
44: dans l'arith\'{e}tique d'ordre sup\'{e}rieur}}.
45: \newblock PhD thesis, Universit\'{e} Paris VII, 1972.
46:
47: \bibitem{HM95}
48: R.~Harper and G.~Morrisett.
49: \newblock Compiling polymorphism using intentional type analysis.
50: \newblock In {\em Conference Record of POPL '95: 22nd Annual ACM SIGPLAN-SIGACT
51: Symposium on Principles of Programming Languages, San Francisco, Calif.},
52: pages 130--141. ACM, Jan. 1995.
53:
54: \bibitem{JJ96}
55: J.~Jeuring and P.~Jansson.
56: \newblock Polytypic programming.
57: \newblock In J.~Launchbury, E.~Meijer, and T.~Sheard, editors, {\em 2nd Int.\
58: School on Advanced Functional Programming, Olympia, WA, USA, 26--30 Aug
59: 1996}, volume 1129 of {\em LNCS}, pages 68--114. Springer-Verlag, Berlin,
60: 1996.
61:
62: \bibitem{Jones95}
63: M.~Jones.
64: \newblock {Functional Programming with Overloading and Higher-Order
65: Polymorphism}.
66: \newblock In J.~Jeuring and E.~Meijer, editors, {\em {Advanced Functional
67: Programming}}, volume 925 of {\em LNCS}, pages 97--136. Springer-Verlag,
68: 1995.
69:
70: \bibitem{Jones97}
71: M.~Jones.
72: \newblock First-class polymorphism with type inference.
73: \newblock In {\em Conference Record of {POPL}~'97: The 24th {ACM}
74: {SIGPLAN}-{SIGACT} Symposium on Principles of Programming Languages}, pages
75: 483--496, Paris, France, 15--17 Jan. 1997.
76:
77: \bibitem{Laemmel02-TGT}
78: R.~L{\"a}mmel.
79: \newblock {Typed Generic Traversal With Term Rewriting Strategies}.
80: \newblock {\em Journal of Logic and Algebraic Programming}, 54, September 2002.
81:
82: \bibitem{LV00}
83: R.~L{\"a}mmel and J.~Visser.
84: \newblock {Type-safe Functional Strategies}.
85: \newblock In {\em Draft proc.\ of SFP'00, St Andrews}, July 2000.
86:
87: \bibitem{LV02-PADL}
88: R.~L{\"a}mmel and J.~Visser.
89: \newblock {Typed Combinators for Generic Traversal}.
90: \newblock In S.~Krishnamurthi and C.~Ramakrishnan, editors, {\em {Proc.\ of
91: PADL'02}}, volume 2257 of {\em LNCS}, pages 137--154. Springer-Verlag, Jan.
92: 2002.
93:
94: \bibitem{LVK00}
95: R.~L{\"a}mmel, J.~Visser, and J.~Kort.
96: \newblock {Dealing with Large Bananas}.
97: \newblock In J.~Jeuring, editor, {\em {Proc.\ of WGP'2000, Technical Report,
98: Universiteit Utrecht}}, pages 46--59, July 2000.
99:
100: \bibitem{Lieberherr96}
101: K.~Lieberherr.
102: \newblock {\em Adaptive Object-Oriented Software: The Demeter Method with
103: Propagation Patterns}.
104: \newblock PWS Publishing Company, Boston, 1996.
105:
106: \bibitem{Meertens92}
107: L.~Meertens.
108: \newblock Paramorphisms.
109: \newblock {\em Formal Aspects of Computing}, 4(5):413--424, 1992.
110:
111: \bibitem{MFP91}
112: E.~Meijer, M.~Fokkinga, and R.~Paterson.
113: \newblock {Functional Programming with Bananas, Lenses, Envelopes, and Barbed
114: Wire}.
115: \newblock In J.~Hughes, editor, {\em Functional Programming Languages and
116: Computer Architecture, 5th ACM Conference, Cambridge, MA, USA, August 26-30,
117: 1991, Proceedings}, volume 523 of {\em LNCS}, pages 124--144.
118: {Springer-Verlag}, 1991.
119:
120: \bibitem{HaskellReport}
121: S.~{Peyton Jones} and J.~{Hughes (eds.)}.
122: \newblock Haskell 98: A non-strict, purely functional language.
123: \newblock \url{http://www.haskell.org/onlinereport/}, 1999.
124:
125: \bibitem{Reynolds74}
126: J.~Reynolds.
127: \newblock {Towards a Theory of Type Structures}.
128: \newblock In {\em {Programming Symposium (Colloque sur la Programmation,
129: Paris)}}, volume~19 of {\em LNCS}, pages 408--425. Springer-Verlag, 1974.
130:
131: \bibitem{Reynolds83}
132: J.~Reynolds.
133: \newblock Types, abstraction and parametric polymorphism.
134: \newblock In R.~E.~A. Mason, editor, {\em Proc.\ of 9th IFIP World Computer
135: Congress, Information Processing '83, Paris, France, 19--23 Sept 1983}, pages
136: 513--523. North-Holland, Amsterdam, 1983.
137:
138: \bibitem{Thompson97}
139: S.~Thompson.
140: \newblock Higher-order + {P}olymorphic {=} {R}eusable.
141: \newblock Unpublishled; \url{http://www.cs.ukc.ac.uk/pubs/1997/224}, May 1997.
142:
143: \bibitem{VBT98}
144: E.~Visser, Z.-e.-A. Benaissa, and A.~Tolmach.
145: \newblock {Building Program Optimizers with Rewriting Strategies}.
146: \newblock In {\em {Proceedings of the third ACM SIGPLAN International
147: Conference on Functional Programming (ICFP'98)}}, pages 13--26. ACM Press,
148: September 1998.
149:
150: \bibitem{Wadler89}
151: P.~Wadler.
152: \newblock Theorems for free!
153: \newblock In {\em Proceedings 4th Int.\ Conf.\ on Funct.\ Prog.\ Languages and
154: Computer Arch., FPCA'89, London, UK, 11--13 Sept 1989}, pages 347--359. ACM
155: Press, 1989.
156:
157: \bibitem{Wadler92}
158: P.~Wadler.
159: \newblock The essence of functional programming.
160: \newblock In {ACM}, editor, {\em Conference record of the Nineteenth Annual
161: {ACM} {SIGPLAN-SIGACT} Symposium on Principles of Programming Languages,
162: {Albuquerque, New Mexico}}, pages 1--14. ACM Press, 1992.
163:
164: \bibitem{WB89}
165: P.~Wadler and S.~Blott.
166: \newblock How to make {\it{ad-hoc}} polymorphism less {\it{ad hoc}}.
167: \newblock In {ACM SIGPLAN-SIGACT}, editor, {\em Conference Record of the 16th
168: Annual {ACM} Symposium on Principles of Programming Languages ({POPL} '89)},
169: pages 60--76, Austin, TX, USA, Jan. 1989. ACM Press.
170:
171: \bibitem{Weirich00}
172: S.~Weirich.
173: \newblock {Type-safe cast}.
174: \newblock In {\em {ACM SIGPLAN International Conference on Functional
175: Programming (ICFP'00)}}, pages 58--67, Montreal, Sept. 2000. ACM Press.
176:
177: \bibitem{Weirich02}
178: S.~Weirich.
179: \newblock {Higher-Order Intensional Type Analysis}.
180: \newblock In D.~L. M\'{e}tayer, editor, {\em Programming Languages and Systems:
181: 11th European Symposium on Programming, ESOP 2002, Grenoble, France}, number
182: 2305 in LNCS, pages 98--114, 2002.
183:
184: \end{thebibliography}
185: