Import Upstream version 20180207
[hcoop/debian/mlton.git] / doc / guide / src / References.adoc
CommitLineData
7f918cf1
CE
1References
2==========
3
4<:#AAA:A>
5<:#BBB:B>
6<:#CCC:C>
7<:#DDD:D>
8<:#EEE:E>
9<:#FFF:F>
10<:#GGG:G>
11<:#HHH:H>
12<:#III:I>
13<:#JJJ:J>
14<:#KKK:K>
15<:#LLL:L>
16<:#MMM:M>
17<:#NNN:N>
18<:#OOO:O>
19<:#PPP:P>
20<:#QQQ:Q>
21<:#RRR:R>
22<:#SSS:S>
23<:#TTT:T>
24<:#UUU:U>
25<:#VVV:V>
26<:#WWW:W>
27<:#XXX:X>
28<:#YYY:Y>
29<:#ZZZ:Z>
30
31== <!Anchor(AAA)>A ==
32
33 * <!Anchor(AcarEtAl06)>
34 http://www.umut-acar.org/publications/pldi2006.pdf[An Experimental Analysis of Self-Adjusting Computation]
35 Umut Acar, Guy Blelloch, Matthias Blume, and Kanat Tangwongsan.
36 <:#PLDI:> 2006.
37
38 * <!Anchor(Appel92)>
39 http://us.cambridge.org/titles/catalogue.asp?isbn=0521416957[Compiling with Continuations]
40 (http://www.addall.com/New/submitNew.cgi?query=0-521-41695-7&type=ISBN&location=10000&state=&dispCurr=USD[addall]).
41 ISBN 0521416957.
42 Andrew W. Appel.
43 Cambridge University Press, 1992.
44
45 * <!Anchor(Appel93)>
46 http://www.cs.princeton.edu/research/techreps/TR-364-92[A Critique of Standard ML].
47 Andrew W. Appel.
48 <:#JFP:> 1993.
49
50 * <!Anchor(Appel98)>
51 http://us.cambridge.org/titles/catalogue.asp?isbn=0521582741[Modern Compiler Implementation in ML]
52 (http://www.addall.com/New/submitNew.cgi?query=0-521-58274-1&type=ISBN&location=10000&state=&dispCurr=USD[addall]).
53 ISBN 0521582741
54 Andrew W. Appel.
55 Cambridge University Press, 1998.
56
57 * <!Anchor(AppelJim97)>
58 http://ncstrl.cs.princeton.edu/expand.php?id=TR-556-97[Shrinking Lambda Expressions in Linear Time]
59 Andrew Appel and Trevor Jim.
60 <:#JFP:> 1997.
61
62 * <!Anchor(AppelEtAl94)>
63 http://www.smlnj.org/doc/ML-Lex/manual.html[A lexical analyzer generator for Standard ML. Version 1.6.0]
64 Andrew W. Appel, James S. Mattson, and David R. Tarditi. 1994
65
66== <!Anchor(BBB)>B ==
67
68 * <!Anchor(BaudinetMacQueen85)>
69 http://www.classes.cs.uchicago.edu/archive/2011/spring/22620-1/papers/macqueen-baudinet85.pdf[Tree Pattern Matching for ML].
70 Marianne Baudinet, David MacQueen. 1985.
71+
72____
73Describes the match compiler used in an early version of
74<:SMLNJ:SML/NJ>.
75____
76
77 * <!Anchor(BentonEtAl98)>
78 http://research.microsoft.com/en-us/um/people/nick/icfp98.pdf[Compiling Standard ML to Java Bytecodes].
79 Nick Benton, Andrew Kennedy, and George Russell.
80 <:#ICFP:> 1998.
81
82 * <!Anchor(BentonKennedy99)>
83 http://research.microsoft.com/en-us/um/people/nick/SMLJavaInterop.pdf[Interlanguage Working Without Tears: Blending SML with Java].
84 Nick Benton and Andrew Kennedy.
85 <:#ICFP:> 1999.
86
87 * <!Anchor(BentonKennedy01)>
88 http://research.microsoft.com/en-us/um/people/akenn/sml/ExceptionalSyntax.pdf[Exceptional Syntax].
89 Nick Benton and Andrew Kennedy.
90 <:#JFP:> 2001.
91
92 * <!Anchor(BentonEtAl04)>
93 http://research.microsoft.com/en-us/um/people/nick/p53-Benton.pdf[Adventures in Interoperability: The SML.NET Experience].
94 Nick Benton, Andrew Kennedy, and Claudio Russo.
95 <:#PPDP:> 2004.
96
97 * <!Anchor(BentonEtAl04_2)>
98 http://research.microsoft.com/en-us/um/people/nick/shrinking.pdf[Shrinking Reductions in SML.NET].
99 Nick Benton, Andrew Kennedy, Sam Lindley and Claudio Russo.
100 <:#IFL:> 2004.
101+
102____
103Describes a linear-time implementation of an
104<!Cite(AppelJim97,Appel-Jim shrinker)>, using a mutable IL, and shows
105that it yields nice speedups in SML.NET's compile times. There are
106also benchmarks showing that SML.NET when compiled by MLton runs
107roughly five times faster than when compiled by SML/NJ.
108____
109
110 * <!Anchor(Benton05)>
111 http://research.microsoft.com/en-us/um/people/nick/benton03.pdf[Embedded Interpreters].
112 Nick Benton.
113 <:#JFP:> 2005.
114
115 * <!Anchor(Berry91)>
116 http://www.lfcs.inf.ed.ac.uk/reports/91/ECS-LFCS-91-148/ECS-LFCS-91-148.pdf[The Edinburgh SML Library].
117 Dave Berry.
118 University of Edinburgh Technical Report ECS-LFCS-91-148, 1991.
119
120 * <!Anchor(BerryEtAl93)>
121 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.36.7958&rep=rep1&type=ps[A semantics for ML concurrency primitives].
122 Dave Berry, Robin Milner, and David N. Turner.
123 <:#POPL:> 1992.
124
125 * <!Anchor(Berry93)>
126 http://journals.cambridge.org/abstract_S0956796800000873[Lessons From the Design of a Standard ML Library].
127 Dave Berry.
128 <:#JFP:> 1993.
129
130 * <!Anchor(Bertelsen98)>
131 http://www.petermb.dk/sml2jvm.ps.gz[Compiling SML to Java Bytecode].
132 Peter Bertelsen.
133 Master's Thesis, 1998.
134
135 * <!Anchor(Berthomieu00)>
136 http://homepages.laas.fr/bernard/oo/ooml.html[OO Programming styles in ML].
137 Bernard Berthomieu.
138 LAAS Report #2000111, 2000.
139
140 * <!Anchor(Blume01)>
141 http://people.cs.uchicago.edu/~blume/papers/nlffi-entcs.pdf[No-Longer-Foreign: Teaching an ML compiler to speak C "natively"].
142 Matthias Blume.
143 <:#BABEL:> 2001.
144
145 * <!Anchor(Blume01_02)>
146 http://people.cs.uchicago.edu/~blume/pgraph/proposal.pdf[Portable library descriptions for Standard ML].
147 Matthias Blume. 2001.
148
149 * <!Anchor(Boehm03)>
150 http://www.hpl.hp.com/techreports/2002/HPL-2002-335.html[Destructors, Finalizers, and Synchronization].
151 Hans Boehm.
152 <:#POPL:> 2003.
153+
154____
155Discusses a number of issues in the design of finalizers. Many of the
156design choices are consistent with <:MLtonFinalizable:>.
157____
158
159== <!Anchor(CCC)>C ==
160
161 * <!Anchor(CejtinEtAl00)>
162 http://www.cs.purdue.edu/homes/suresh/papers/icfp99.ps.gz[Flow-directed Closure Conversion for Typed Languages].
163 Henry Cejtin, Suresh Jagannathan, and Stephen Weeks.
164 <:#ESOP:> 2000.
165+
166____
167Describes MLton's closure-conversion algorithm, which translates from
168its simply-typed higher-order intermediate language to its
169simply-typed first-order intermediate language.
170____
171
172 * <!Anchor(ChengBlelloch01)>
173 http://www.cs.cmu.edu/afs/cs/project/pscico/pscico/papers/gc01/pldi-final.pdf[A Parallel, Real-Time Garbage Collector].
174 Perry Cheng and Guy E. Blelloch.
175 <:#PLDI:> 2001.
176
177 * <!Anchor(Claessen00)>
178 http://users.eecs.northwestern.edu/~robby/courses/395-495-2009-fall/quick.pdf[QuickCheck: A Lightweight Tool for Random Testing of Haskell Programs].
179 Koen Claessen and John Hughes.
180 <:#ICFP:> 2000.
181
182 * <!Anchor(Clinger98)>
183 http://www.cesura17.net/~will/Professional/Research/Papers/tail.pdf[Proper Tail Recursion and Space Efficiency].
184 William D. Clinger.
185 <:#PLDI:> 1998.
186
187 * <!Anchor(CooperMorrisett90)>
188 http://www.eecs.harvard.edu/~greg/papers/jgmorris-mlthreads.ps[Adding Threads to Standard ML].
189 Eric C. Cooper and J. Gregory Morrisett.
190 CMU Technical Report CMU-CS-90-186, 1990.
191
192 * <!Anchor(CouttsEtAl07)>
193 http://metagraph.org/papers/stream_fusion.pdf[Stream Fusion: From Lists to Streams to Nothing at All].
194 Duncan Coutts, Roman Leshchinskiy, and Don Stewart.
195 Submitted for publication. April 2007.
196
197== <!Anchor(DDD)>D ==
198
199 * <!Anchor(DamasMilner82)>
200 http://groups.csail.mit.edu/pag/6.883/readings/p207-damas.pdf[Principal Type-Schemes for Functional Programs].
201 Luis Damas and Robin Milner.
202 <:#POPL:> 1982.
203
204 * <!Anchor(Danvy98)>
205 http://www.brics.dk/RS/98/12[Functional Unparsing].
206 Olivier Danvy.
207 BRICS Technical Report RS 98-12, 1998.
208
209 * <!Anchor(Deboer05)>
210 http://alleystoughton.us/eXene/dusty-thesis.pdf[Exhancements to eXene].
211 Dustin B. deBoer.
212 Master of Science Thesis, 2005.
213+
214____
215Describes ways to improve widget concurrency, handling of input focus,
216X resources and selections.
217____
218
219 * <!Anchor(DoligezLeroy93)>
220 http://cristal.inria.fr/~doligez/publications/doligez-leroy-popl-1993.pdf[A Concurrent, Generational Garbage Collector for a Multithreaded Implementation of ML].
221 Damien Doligez and Xavier Leroy.
222 <:#POPL:> 1993.
223
224 * <!Anchor(Dreyer07)>
225 http://www.mpi-sws.org/~dreyer/papers/mtc/main-long.pdf[Modular Type Classes].
226 Derek Dreyer, Robert Harper, Manuel M.T. Chakravarty, Gabriele Keller.
227 University of Chicago Technical Report TR-2007-02, 2006.
228
229 * <!Anchor(DreyerBlume07)>
230 http://www.mpi-sws.org/~dreyer/papers/infmod/main-long.pdf[Principal Type Schemes for Modular Programs].
231 Derek Dreyer and Matthias Blume.
232 <:#ESOP:> 2007.
233
234 * <!Anchor(Dubois95)>
235 ftp://ftp.inria.fr/INRIA/Projects/cristal/Francois.Rouaix/generics.dvi.Z[Extensional Polymorphism].
236 Catherin Dubois, Francois Rouaix, and Pierre Weis.
237 <:#POPL:> 1995.
238+
239____
240An extension of ML that allows the definition of ad-hoc polymorphic
241functions by inspecting the type of their argument.
242____
243
244== <!Anchor(EEE)>E ==
245
246 * <!Anchor(Elsman03)>
247 http://www.elsman.com/tldi03.pdf[Garbage Collection Safety for Region-based Memory Management].
248 Martin Elsman.
249 <:#TLDI:> 2003.
250
251 * <!Anchor(Elsman04)>
252 http://www.elsman.com/ITU-TR-2004-43.pdf[Type-Specialized Serialization with Sharing].
253 Martin Elsman. University of Copenhagen. IT University Technical
254 Report TR-2004-43, 2004.
255
256== <!Anchor(FFF)>F ==
257
258 * <!Anchor(FelleisenFreidman98)>
259 http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=4787[The Little MLer]
260 (http://www3.addall.com/New/submitNew.cgi?query=026256114X&type=ISBN[addall]).
261 ISBN 026256114X.
262 Matthias Felleisen and Dan Freidman.
263 The MIT Press, 1998.
264
265 * <!Anchor(FlattFindler04)>
266 http://www.cs.utah.edu/plt/kill-safe/[Kill-Safe Synchronization Abstractions].
267 Matthew Flatt and Robert Bruce Findler.
268 <:#PLDI:> 2004.
269
270 * <!Anchor(FluetWeeks01)>
271 http://www.cs.rit.edu/~mtf/research/contification[Contification Using Dominators].
272 Matthew Fluet and Stephen Weeks.
273 <:#ICFP:> 2001.
274+
275____
276Describes contification, a generalization of tail-recursion
277elimination that is an optimization operating on MLton's static single
278assignment (SSA) intermediate language.
279____
280
281 * <!Anchor(FluetPucella06)>
282 http://www.cs.rit.edu/~mtf/research/phantom-subtyping/jfp06/jfp06.pdf[Phantom Types and Subtyping].
283 Matthew Fluet and Riccardo Pucella.
284 <:#JFP:> 2006.
285
286 * <!Anchor(Furuse01)>
287 http://jfla.inria.fr/2001/actes/07-furuse.ps[Generic Polymorphism in ML].
288 J{empty}. Furuse.
289 <:#JFLA:> 2001.
290+
291____
292The formalism behind G'CAML, which has an approach to ad-hoc
293polymorphism based on <!Cite(Dubois95)>, the differences being in how
294type checking works an an improved compilation approach for typecase
295that does the matching at compile time, not run time.
296____
297
298== <!Anchor(GGG)>G ==
299
300 * <!Anchor(GansnerReppy93)>
301 http://alleystoughton.us/eXene/1993-trends.pdf[A Multi-Threaded Higher-order User Interface Toolkit].
302 Emden R. Gansner and John H. Reppy.
303 User Interface Software, 1993.
304
305 * <!Anchor(GansnerReppy04)>
306http://www.cambridge.org/gb/academic/subjects/computer-science/programming-languages-and-applied-logic/standard-ml-basis-library[The Standard ML Basis Library].
307 (http://www3.addall.com/New/submitNew.cgi?query=9780521794787&type=ISBN[addall])
308 ISBN 9780521794787.
309 Emden R. Gansner and John H. Reppy.
310 Cambridge University Press, 2004.
311+
312____
313An introduction and overview of the <:BasisLibrary:Basis Library>,
314followed by a detailed description of each module. The module
315descriptions are also available
316http://www.standardml.org/Basis[online].
317____
318
319 * <!Anchor(GrossmanEtAl02)>
320 http://www.cs.umd.edu/projects/cyclone/papers/cyclone-regions.pdf[Region-based Memory Management in Cyclone].
321 Dan Grossman, Greg Morrisett, Trevor Jim, Michael Hicks, Yanling
322 Wang, and James Cheney.
323 <:#PLDI:> 2002.
324
325== <!Anchor(HHH)>H ==
326
327 * <!Anchor(HallenbergEtAl02)>
328 http://www.itu.dk/people/tofte/publ/pldi2002.pdf[Combining Region Inference and Garbage Collection].
329 Niels Hallenberg, Martin Elsman, and Mads Tofte.
330 <:#PLDI:> 2002.
331
332 * <!Anchor(HansenRichel99)>
333 http://www.it.dtu.dk/introSML[Introduction to Programming Using SML]
334 (http://www3.addall.com/New/submitNew.cgi?query=0201398206&type=ISBN[addall]).
335 ISBN 0201398206.
336 Michael R. Hansen, Hans Rischel.
337 Addison-Wesley, 1999.
338
339 * <!Anchor(Harper11)>
340 http://www.cs.cmu.edu/~rwh/smlbook/book.pdf[Programming in Standard ML].
341 Robert Harper.
342
343 * <!Anchor(HarperEtAl93)>
344 http://www.cs.cmu.edu/~rwh/papers/callcc/jfp.pdf[Typing First-Class Continuations in ML].
345 Robert Harper, Bruce F. Duba, and David MacQueen.
346 <:#JFP:> 1993.
347
348 * <!Anchor(HarperMitchell92)>
349 http://www.cs.cmu.edu/~rwh/papers/xml/toplas93.pdf[On the Type Structure of Standard ML].
350 Robert Harper and John C. Mitchell.
351 <:#TOPLAS:> 1992.
352
353 * <!Anchor(HauserBenson04)>
354 http://doi.ieeecomputersociety.org/10.1109/CSD.2004.1309122[On the Practicality and Desirability of Highly-concurrent, Mostly-functional Programming].
355 Carl H. Hauser and David B. Benson.
356 <:#ACSD:> 2004.
357+
358____
359Describes the use of <:ConcurrentML: Concurrent ML> in implementing
360the Ped text editor. Argues that using large numbers of threads and
361message passing style is a practical and effective way of
362modularizing a program.
363____
364
365 * <!Anchor(HeckmanWilhelm97)>
366 http://rw4.cs.uni-sb.de/~heckmann/abstracts/neuform.html[A Functional Description of TeX's Formula Layout].
367 Reinhold Heckmann and Reinhard Wilhelm.
368 <:#JFP:> 1997.
369
370 * <!Anchor(HicksEtAl03)>
371 http://wwwold.cs.umd.edu/Library/TRs/CS-TR-4514/CS-TR-4514.pdf[Safe and Flexible Memory Management in Cyclone].
372 Mike Hicks, Greg Morrisett, Dan Grossman, and Trevor Jim.
373 University of Maryland Technical Report CS-TR-4514, 2003.
374
375 * <!Anchor(Hurd04)>
376 http://www.gilith.com/research/talks/tphols2004.pdf[Compiling HOL4 to Native Code].
377 Joe Hurd.
378 <:#TPHOLs:> 2004.
379+
380____
381Describes a port of HOL from Moscow ML to MLton, the difficulties
382encountered in compiling large programs, and the speedups achieved
383(roughly 10x).
384____
385
386== <!Anchor(III)>I ==
387
388{empty}
389
390== <!Anchor(JJJ)>J ==
391
392 * <!Anchor(Jones99)>
393 http://www.cs.kent.ac.uk/people/staff/rej/gcbook[Garbage Collection: Algorithms for Automatic Memory Management]
394 (http://www3.addall.com/New/submitNew.cgi?query=0471941484&type=ISBN[addall]).
395 ISBN 0471941484.
396 Richard Jones.
397 John Wiley & Sons, 1999.
398
399== <!Anchor(KKK)>K ==
400
401 * <!Anchor(Kahrs93)>
402 http://kar.kent.ac.uk/21122/[Mistakes and Ambiguities in the Definition of Standard ML].
403 Stefan Kahrs.
404 University of Edinburgh Technical Report ECS-LFCS-93-257, 1993.
405+
406____
407Describes a number of problems with the
408<!Cite(MilnerEtAl90,1990 Definition)>, many of which were fixed in the
409<!Cite(MilnerEtAl97,1997 Definition)>.
410
411Also see the http://www.cs.kent.ac.uk/~smk/errors-new.ps.Z[addenda]
412published in 1996.
413____
414
415 * <!Anchor(Karvonen07)>
416 http://dl.acm.org/citation.cfm?doid=1292535.1292547[Generics for the Working ML'er].
417 Vesa Karvonen.
418 <:#ML:> 2007. http://research.microsoft.com/~crusso/ml2007/slides/ml08rp-karvonen-slides.pdf[Slides] from the presentation are also available.
419
420 * <!Anchor(Kennedy04)>
421 http://research.microsoft.com/~akenn/fun/picklercombinators.pdf[Pickler Combinators].
422 Andrew Kennedy.
423 <:#JFP:> 2004.
424
425 * <!Anchor(KoserEtAl03)>
426 http://www.litech.org/~vaughan/pdf/dpcool2003.pdf[sml2java: A Source To Source Translator].
427 Justin Koser, Haakon Larsen, Jeffrey A. Vaughan.
428 <:#DPCOOL:> 2003.
429
430== <!Anchor(LLL)>L ==
431
432 * <!Anchor(Lang99)>
433 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.29.7130&rep=rep1&type=ps[Faster Algorithms for Finding Minimal Consistent DFAs].
434 Kevin Lang. 1999.
435
436 * <!Anchor(LarsenNiss04)>
437 http://usenix.org/publications/library/proceedings/usenix04/tech/freenix/full_papers/larsen/larsen.pdf[mGTK: An SML binding of Gtk+].
438 Ken Larsen and Henning Niss.
439 USENIX Annual Technical Conference, 2004.
440
441 * <!Anchor(Leibig13)>
442 http://www.cs.rit.edu/~bal6053/msproject/[An LLVM Back-end for MLton].
443 Brian Leibig.
444 MS Project Report, 2013.
445+
446____
447Describes MLton's <:LLVMCodegen:>.
448____
449
450 * <!Anchor(Leroy90)>
451 http://pauillac.inria.fr/~xleroy/bibrefs/Leroy-ZINC.html[The ZINC Experiment: an Economical Implementation of the ML Language].
452 Xavier Leroy.
453 Technical report 117, INRIA, 1990.
454+
455____
456A detailed explanation of the design and implementation of a bytecode
457compiler and interpreter for ML with a machine model aimed at
458efficient implementation.
459____
460
461 * <!Anchor(Leroy93)>
462 http://pauillac.inria.fr/~xleroy/bibrefs/Leroy-poly-par-nom.html[Polymorphism by Name for References and Continuations].
463 Xavier Leroy.
464 <:#POPL:> 1993.
465
466 * <!Anchor(LeungGeorge99)>
467 http://www.cs.nyu.edu/leunga/my-papers/annotations.ps[MLRISC Annotations].
468 Allen Leung and Lal George. 1999.
469
470== <!Anchor(MMM)>M ==
471
472 * <!Anchor(MarlowEtAl01)>
473 http://community.haskell.org/~simonmar/papers/async.pdf[Asynchronous Exceptions in Haskell].
474 Simon Marlow, Simon Peyton Jones, Andy Moran and John Reppy.
475 <:#PLDI:> 2001.
476+
477____
478An asynchronous exception is a signal that one thread can send to
479another, and is useful for the receiving thread to treat as an
480exception so that it can clean up locks or other state relevant to its
481current context.
482____
483
484 * <!Anchor(MacQueenEtAl84)>
485 http://homepages.inf.ed.ac.uk/gdp/publications/Ideal_model.pdf[An Ideal Model for Recursive Polymorphic Types].
486 David MacQueen, Gordon Plotkin, Ravi Sethi.
487 <:#POPL:> 1984.
488
489 * <!Anchor(Matthews91)>
490 http://www.lfcs.inf.ed.ac.uk/reports/91/ECS-LFCS-91-174[A Distributed Concurrent Implementation of Standard ML].
491 David Matthews.
492 University of Edinburgh Technical Report ECS-LFCS-91-174, 1991.
493
494 * <!Anchor(Matthews95)>
495 http://www.lfcs.inf.ed.ac.uk/reports/95/ECS-LFCS-95-335[Papers on Poly/ML].
496 David C. J. Matthews.
497 University of Edinburgh Technical Report ECS-LFCS-95-335, 1995.
498
499 * http://www.lfcs.inf.ed.ac.uk/reports/97/ECS-LFCS-97-375[That About Wraps it Up: Using FIX to Handle Errors Without Exceptions, and Other Programming Tricks].
500 Bruce J. McAdam.
501 University of Edinburgh Technical Report ECS-LFCS-97-375, 1997.
502
503 * <!Anchor(MeierNorgaard93)>
504 A Just-In-Time Backend for Moscow ML 2.00 in SML.
505 Bjarke Meier, Kristian Nørgaard.
506 Masters Thesis, 2003.
507+
508____
509A just-in-time compiler using GNU Lightning, showing a speedup of up
510to four times over Moscow ML's usual bytecode interpreter.
511
512The full report is only available in
513http://www.itu.dk/stud/speciale/bmkn/fundanemt/download/report[Danish].
514____
515
516 * <!Anchor(Milner78)>
517 http://courses.engr.illinois.edu/cs421/sp2013/project/milner-polymorphism.pdf[A Theory of Type Polymorphism in Programming].
518 Robin Milner.
519 Journal of Computer and System Sciences, 1978.
520
521 * <!Anchor(Milner82)>
522 http://homepages.inf.ed.ac.uk/dts/fps/papers/evolved.dvi.gz[How ML Evolved].
523 Robin Milner.
524 Polymorphism--The ML/LCF/Hope Newsletter, 1983.
525
526 * <!Anchor(MilnerTofte91)>
527 http://www.itu.dk/people/tofte/publ/1990sml/1990sml.html[Commentary on Standard ML]
528 (http://www3.addall.com/New/submitNew.cgi?query=0262631377&type=ISBN[addall])
529 ISBN 0262631377.
530 Robin Milner and Mads Tofte.
531 The MIT Press, 1991.
532+
533____
534Introduces and explains the notation and approach used in
535<!Cite(MilnerEtAl90,The Definition of Standard ML)>.
536____
537
538 * <!Anchor(MilnerEtAl90)>
539 http://www.itu.dk/people/tofte/publ/1990sml/1990sml.html[The Definition of Standard ML].
540 (http://www3.addall.com/New/submitNew.cgi?query=0262631326&type=ISBN[addall])
541 ISBN 0262631326.
542 Robin Milner, Mads Tofte, and Robert Harper.
543 The MIT Press, 1990.
544+
545____
546Superseded by <!Cite(MilnerEtAl97,The Definition of Standard ML (Revised))>.
547Accompanied by the <!Cite(MilnerTofte91,Commentary on Standard ML)>.
548____
549
550 * <!Anchor(MilnerEtAl97)>
551 http://mitpress.mit.edu/books/definition-standard-ml[The Definition of Standard ML (Revised)].
552 (http://www3.addall.com/New/submitNew.cgi?query=0262631814&type=ISBN[addall])
553 ISBN 0262631814.
554 Robin Milner, Mads Tofte, Robert Harper, and David MacQueen.
555 The MIT Press, 1997.
556+
557____
558A terse and formal specification of Standard ML's syntax and
559semantics. Supersedes <!Cite(MilnerEtAl90,The Definition of Standard ML)>.
560____
561
562 * <!Anchor(ML2000)>
563 http://flint.cs.yale.edu/flint/publications/ml2000.html[Principles and a Preliminary Design for ML2000].
564 The ML2000 working group, 1999.
565
566 * <!Anchor(Morentsen99)>
567 http://daimi.au.dk/CPnets/workshop99/papers/Mortensen.pdf[Automatic Code Generation from Coloured Petri Nets for an Access Control System].
568 Kjeld H. Mortensen.
569 Workshop on Practical Use of Coloured Petri Nets and Design/CPN, 1999.
570
571 * <!Anchor(MorrisettTolmach93)>
572 http://web.cecs.pdx.edu/~apt/ppopp93.ps[Procs and Locks: a Portable Multiprocessing Platform for Standard ML of New Jersey].
573 J{empty}. Gregory Morrisett and Andrew Tolmach.
574 <:#PPoPP:> 1993.
575
576 * <!Anchor(Murphy06)>
577 http://www.cs.cmu.edu/~tom7/papers/grid-ml06.pdf[ML Grid Programming with ConCert].
578 Tom Murphy VII.
579 <:#ML:> 2006.
580
581== <!Anchor(NNN)>N ==
582
583 * <!Anchor(Neumann99)>
584 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.25.9485&rep=rep1&type=ps[fxp - Processing Structured Documents in SML].
585 Andreas Neumann.
586 Scottish Functional Programming Workshop, 1999.
587+
588____
589Describes http://atseidl2.informatik.tu-muenchen.de/~berlea/Fxp[fxp],
590an XML parser implemented in Standard ML.
591____
592
593 * <!Anchor(Neumann99Thesis)>
594 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.25.8108&rep=rep1&type=ps[Parsing and Querying XML Documents in SML].
595 Andreas Neumann.
596 Doctoral Thesis, 1999.
597
598 * <!Anchor(NguyenOhori06)>
599 http://www.pllab.riec.tohoku.ac.jp/~ohori/research/NguyenOhoriPPDP06.pdf[Compiling ML Polymorphism with Explicit Layout Bitmap].
600 Huu-Duc Nguyen and Atsushi Ohori.
601 <:#PPDP:> 2006.
602
603== <!Anchor(OOO)>O ==
604
605 * <!Anchor(Okasaki99)>
606http://www.cambridge.org/gb/academic/subjects/computer-science/programming-languages-and-applied-logic/purely-functional-data-structures[Purely Functional Data Structures].
607 ISBN 9780521663502.
608 Chris Okasaki.
609 Cambridge University Press, 1999.
610
611 * <!Anchor(Ohori89)>
612 http://www.pllab.riec.tohoku.ac.jp/~ohori/research/fpca89.pdf[A Simple Semantics for ML Polymorphism].
613 Atsushi Ohori.
614 <:#FPCA:> 1989.
615
616 * <!Anchor(Ohori95)>
617 http://www.pllab.riec.tohoku.ac.jp/~ohori/research/toplas95.pdf[A Polymorphic Record Calculus and Its Compilation].
618 Atsushi Ohori.
619 <:#TOPLAS:> 1995.
620
621 * <!Anchor(OhoriTakamizawa97)>
622 http://www.pllab.riec.tohoku.ac.jp/~ohori/research/jlsc97.pdf[An Unboxed Operational Semantics for ML Polymorphism].
623 Atsushi Ohori and Tomonobu Takamizawa.
624 <:#LASC:> 1997.
625
626 * <!Anchor(Ohori99)>
627 http://www.pllab.riec.tohoku.ac.jp/~ohori/research/ic98.pdf[Type-Directed Specialization of Polymorphism].
628 Atsushi Ohori.
629 <:#IC:> 1999.
630
631 * <!Anchor(OwensEtAl09)>
632 http://www.mpi-sws.org/~turon/re-deriv.pdf[Regular-expression derivatives reexamined].
633 Scott Owens, John Reppy, and Aaron Turon.
634 <:#JFP:> 2009.
635
636== <!Anchor(PPP)>P ==
637
638 * <!Anchor(Paulson96)>
639 http://www.cambridge.org/co/academic/subjects/computer-science/programming-languages-and-applied-logic/ml-working-programmer-2nd-edition[ML For the Working Programmer]
640 (http://www3.addall.com/New/submitNew.cgi?query=052156543X&type=ISBN[addall])
641 ISBN 052156543X.
642 Larry C. Paulson.
643 Cambridge University Press, 1996.
644
645 * <!Anchor(PetterssonEtAl02)>
646 http://user.it.uu.se/~kostis/Papers/flops02_22.ps.gz[The HiPE/x86 Erlang Compiler: System Description and Performance Evaluation].
647 Mikael Pettersson, Konstantinos Sagonas, and Erik Johansson.
648 <:#FLOPS:> 2002.
649+
650____
651Describes a native x86 Erlang compiler and a comparison of many
652different native x86 compilers (including MLton) and their register
653usage and call stack implementations.
654____
655
656 * <!Anchor(Price09)>
657 http://rogerprice.org/#UG[User's Guide to ML-Lex and ML-Yacc]
658 Roger Price. 2009.
659
660 * <!Anchor(Pucella98)>
661 http://arxiv.org/abs/cs.PL/0405080[Reactive Programming in Standard ML].
662 Riccardo R. Puccella. 1998.
663 <:#ICCL:> 1998.
664
665== <!Anchor(QQQ)>Q ==
666
667{empty}
668
669== <!Anchor(RRR)>R ==
670
671 * <!Anchor(Ramsey90)>
672 https://www.cs.princeton.edu/research/techreps/TR-262-90[Concurrent Programming in ML].
673 Norman Ramsey.
674 Princeton University Technical Report CS-TR-262-90, 1990.
675
676 * <!Anchor(Ramsey11)>
677 http://www.cs.tufts.edu/~nr/pubs/embedj-abstract.html[Embedding an Interpreted Language Using Higher-Order Functions and Types].
678 Norman Ramsey.
679 <:#JFP:> 2011.
680
681 * <!Anchor(RamseyFisherGovereau05)>
682 http://www.cs.tufts.edu/~nr/pubs/els-abstract.html[An Expressive Language of Signatures].
683 Norman Ramsey, Kathleen Fisher, and Paul Govereau.
684 <:#ICFP:> 2005.
685
686 * <!Anchor(RedwineRamsey04)>
687 http://www.cs.tufts.edu/~nr/pubs/widen-abstract.html[Widening Integer Arithmetic].
688 Kevin Redwine and Norman Ramsey.
689 <:#CC:> 2004.
690+
691____
692Describes a method to implement numeric types and operations (like
693`Int31` or `Word17`) for sizes smaller than that provided by the
694processor.
695____
696
697 * <!Anchor(Reppy88)>
698 Synchronous Operations as First-Class Values.
699 John Reppy.
700 <:#PLDI:> 1988.
701
702 * <!Anchor(Reppy07)>
703 http://www.cambridge.org/co/academic/subjects/computer-science/distributed-networked-and-mobile-computing/concurrent-programming-ml[Concurrent Programming in ML]
704 (http://www3.addall.com/New/submitNew.cgi?query=9780521714723&type=ISBN[addall]).
705 ISBN 9780521714723.
706 John Reppy.
707 Cambridge University Press, 2007.
708+
709____
710Describes <:ConcurrentML:>.
711____
712
713 * <!Anchor(Reynolds98)>
714 https://users-cs.au.dk/hosc/local/HOSC-11-4-pp355-361.pdf[Definitional Interpreters Revisited].
715 John C. Reynolds.
716 <:#HOSC:> 1998.
717
718 * <!Anchor(Reynolds98_2)>
719 https://users-cs.au.dk/hosc/local/HOSC-11-4-pp363-397.pdf[Definitional Interpreters for Higher-Order Programming Languages]
720 John C. Reynolds.
721 <:#HOSC:> 1998.
722
723 * <!Anchor(Rossberg01)>
724 http://www.mpi-sws.org/~rossberg/papers/Rossberg%20-%20Defects%20in%20the%20Revised%20Definition%20of%20Standard%20ML%20%5B2007-01-22%20Update%5D.pdf[Defects in the Revised Definition of Standard ML].
725 Andreas Rossberg. 2001.
726
727== <!Anchor(SSS)>S ==
728
729 * <!Anchor(Sansom91)>
730 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.24.1020&rep=rep1&type=ps[Dual-Mode Garbage Collection].
731 Patrick M. Sansom.
732 Workshop on the Parallel Implementation of Functional Languages, 1991.
733
734 * <!Anchor(ScottRamsey00)>
735 http://www.cs.tufts.edu/~nr/pubs/match-abstract.html[When Do Match-Compilation Heuristics Matter].
736 Kevin Scott and Norman Ramsey.
737 University of Virginia Technical Report CS-2000-13, 2000.
738+
739____
740Modified SML/NJ to experimentally compare a number of
741match-compilation heuristics and showed that choice of heuristic
742usually does not significantly affect code size or run time.
743____
744
745 * <!Anchor(Sestoft96)>
746 http://www.itu.dk/~sestoft/papers/match.ps.gz[ML Pattern Match Compilation and Partial Evaluation].
747 Peter Sestoft.
748 Partial Evaluation, 1996.
749+
750____
751Describes the derivation of the match compiler used in
752<:MoscowML:Moscow ML>.
753____
754
755 * <!Anchor(ShaoAppel94)>
756 http://flint.cs.yale.edu/flint/publications/closure.html[Space-Efficient Closure Representations].
757 Zhong Shao and Andrew W. Appel.
758 <:#LFP:> 1994.
759
760 * <!Anchor(Shipman02)>
761 <!Attachment(References,Shipman02.pdf,Unix System Programming with Standard ML)>.
762 Anthony L. Shipman.
763 2002.
764+
765____
766Includes a description of the <:Swerve:> HTTP server written in SML.
767____
768
769 * <!Anchor(Signoles03)>
770 Calcul Statique des Applications de Modules Parametres.
771 Julien Signoles.
772 <:#JFLA:> 2003.
773+
774____
775Describes a http://caml.inria.fr/cgi-bin/hump.en.cgi?contrib=382[defunctorizer]
776for OCaml, and compares it to existing defunctorizers, including MLton.
777____
778
779 * <!Anchor(SittampalamEtAl04)>
780 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.4.1349&rep=rep1&type=ps[Incremental Execution of Transformation Specifications].
781 Ganesh Sittampalam, Oege de Moor, and Ken Friis Larsen.
782 <:#POPL:> 2004.
783+
784____
785Mentions a port from Moscow ML to MLton of
786http://www.itu.dk/research/muddy/[MuDDY], an SML wrapper around the
787http://sourceforge.net/projects/buddy[BuDDY] BDD package.
788____
789
790 * <!Anchor(SwaseyEtAl06)>
791 http://www.cs.cmu.edu/~tom7/papers/smlsc2-ml06.pdf[A Separate Compilation Extension to Standard ML].
792 David Swasey, Tom Murphy VII, Karl Crary and Robert Harper.
793 <:#ML:> 2006.
794
795== <!Anchor(TTT)>T ==
796
797 * <!Anchor(TarditiAppel00)>
798 http://www.smlnj.org/doc/ML-Yacc/index.html[ML-Yacc User's Manual. Version 2.4]
799 David R. Tarditi and Andrew W. Appel. 2000.
800
801 * <!Anchor(TarditiEtAl90)>
802 http://research.microsoft.com/pubs/68738/loplas-sml2c.ps[No Assembly Required: Compiling Standard ML to C].
803 David Tarditi, Peter Lee, and Anurag Acharya. 1990.
804
805 * <!Anchor(ThorupTofte94)>
806 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.53.5372&rep=rep1&type=ps[Object-oriented programming and Standard ML].
807 Lars Thorup and Mads Tofte.
808 <:#ML:>, 1994.
809
810 * <!Anchor(Tofte90)>
811 Type Inference for Polymorphic References.
812 Mads Tofte.
813 <:#IC:> 1990.
814
815 * <!Anchor(Tofte96)>
816 http://www.itu.dk/courses/FDP/E2004/Tofte-1996-Essentials_of_SML_Modules.pdf[Essentials of Standard ML Modules].
817 Mads Tofte.
818
819 * <!Anchor(Tofte09)>
820 http://www.itu.dk/people/tofte/publ/tips.pdf[Tips for Computer Scientists on Standard ML (Revised)].
821 Mads Tofte.
822
823 * <!Anchor(TolmachAppel95)>
824 http://web.cecs.pdx.edu/~apt/jfp95.ps[A Debugger for Standard ML].
825 Andrew Tolmach and Andrew W. Appel.
826 <:#JFP:> 1995.
827
828 * <!Anchor(Tolmach97)>
829 http://web.cecs.pdx.edu/~apt/tic97.ps[Combining Closure Conversion with Closure Analysis using Algebraic Types].
830 Andrew Tolmach.
831 <:#TIC:> 1997.
832+
833____
834Describes a closure-conversion algorithm for a monomorphic IL. The
835algorithm uses a unification-based flow analysis followed by
836defunctionalization and is similar to the approach used in MLton
837(<!Cite(CejtinEtAl00)>).
838____
839
840 * <!Anchor(TolmachOliva98)>
841 http://web.cecs.pdx.edu/~apt/jfp98.ps[From ML to Ada: Strongly-typed Language Interoperability via Source Translation].
842 Andrew Tolmach and Dino Oliva.
843 <:#JFP:> 1998.
844+
845____
846Describes a compiler for RML, a core SML-like language. The compiler
847is similar in structure to MLton, using monomorphisation,
848defunctionalization, and optimization on a first-order IL.
849____
850
851== <!Anchor(UUU)>U ==
852
853 * <!Anchor(Ullman98)>
854 http://www-db.stanford.edu/~ullman/emlp.html[Elements of ML Programming]
855 (http://www3.addall.com/New/submitNew.cgi?query=0137903871&type=ISBN[addall]).
856 ISBN 0137903871.
857 Jeffrey D. Ullman.
858 Prentice-Hall, 1998.
859
860== <!Anchor(VVV)>V ==
861
862{empty}
863
864== <!Anchor(WWW)>W ==
865
866 * <!Anchor(Wand84)>
867 http://portal.acm.org/citation.cfm?id=800527[A Types-as-Sets Semantics for Milner-Style Polymorphism].
868 Mitchell Wand.
869 <:#POPL:> 1984.
870
871 * <!Anchor(Wang01)>
872 http://ncstrl.cs.princeton.edu/expand.php?id=TR-640-01[Managing Memory with Types].
873 Daniel C. Wang.
874 PhD Thesis.
875+
876____
877Chapter 6 describes an implementation of a type-preserving garbage
878collector for MLton.
879____
880
881 * <!Anchor(WangAppel01)>
882 http://www.cs.princeton.edu/~appel/papers/typegc.pdf[Type-Preserving Garbage Collectors].
883 Daniel C. Wang and Andrew W. Appel.
884 <:#POPL:> 2001.
885+
886____
887Shows how to modify MLton to generate a strongly-typed garbage
888collector as part of a program.
889____
890
891 * <!Anchor(WangMurphy02)>
892 http://www.cs.cmu.edu/~tom7/papers/wang-murphy-recursion.pdf[Programming With Recursion Schemes].
893 Daniel C. Wang and Tom Murphy VII.
894+
895____
896Describes a programming technique for data abstraction, along with
897benchmarks of MLton and other SML compilers.
898____
899
900 * <!Anchor(Weeks06)>
901 <!Attachment(References,060916-mlton.pdf,Whole-Program Compilation in MLton)>.
902 Stephen Weeks.
903 <:#ML:> 2006.
904
905 * <!Anchor(Wright95)>
906 http://homepages.inf.ed.ac.uk/dts/fps/papers/wright.ps.gz[Simple Imperative Polymorphism].
907 Andrew Wright.
908 <:#LASC:>, 8(4):343-355, 1995.
909+
910____
911The origin of the <:ValueRestriction:>.
912____
913
914== <!Anchor(XXX)>X ==
915
916{empty}
917
918== <!Anchor(YYY)>Y ==
919
920 * <!Anchor(Yang98)>
921 http://cs.nyu.edu/zheyang/papers/YangZ\--ICFP98.html[Encoding Types in ML-like Languages].
922 Zhe Yang.
923 <:#ICFP:> 1998.
924
925== <!Anchor(ZZZ)>Z ==
926
927 * <!Anchor(ZiarekEtAl06)>
928 http://www.cs.purdue.edu/homes/lziarek/icfp06.pdf[Stabilizers: A Modular Checkpointing Abstraction for Concurrent Functional Programs].
929 Lukasz Ziarek, Philip Schatz, and Suresh Jagannathan.
930 <:#ICFP:> 2006.
931
932 * <!Anchor(ZiarekEtAl08)>
933 http://www.cse.buffalo.edu/~lziarek/hosc.pdf[Flattening tuples in an SSA intermediate representation].
934 Lukasz Ziarek, Stephen Weeks, and Suresh Jagannathan.
935 <:#HOSC:> 2008.
936
937
938== Abbreviations ==
939
940* <!Anchor(ACSD)> ACSD = International Conference on Application of Concurrency to System Design
941* <!Anchor(BABEL)> BABEL = Workshop on multi-language infrastructure and interoperability
942* <!Anchor(CC)> CC = International Conference on Compiler Construction
943* <!Anchor(DPCOOL)> DPCOOL = Workshop on Declarative Programming in the Context of OO Languages
944* <!Anchor(ESOP)> ESOP = European Symposium on Programming
945* <!Anchor(FLOPS)> FLOPS = Symposium on Functional and Logic Programming
946* <!Anchor(FPCA)> FPCA = Conference on Functional Programming Languages and Computer Architecture
947* <!Anchor(HOSC)> HOSC = Higher-Order and Symbolic Computation
948* <!Anchor(IC)> IC = Information and Computation
949* <!Anchor(ICCL)> ICCL = IEEE International Conference on Computer Languages
950* <!Anchor(ICFP)> ICFP = International Conference on Functional Programming
951* <!Anchor(IFL)> IFL = International Workshop on Implementation and Application of Functional Languages
952* <!Anchor(IVME)> IVME = Workshop on Interpreters, Virtual Machines and Emulators
953* <!Anchor(JFLA)> JFLA = Journees Francophones des Langages Applicatifs
954* <!Anchor(JFP)> JFP = Journal of Functional Programming
955* <!Anchor(LASC)> LASC = Lisp and Symbolic Computation
956* <!Anchor(LFP)> LFP = Lisp and Functional Programming
957* <!Anchor(ML)> ML = Workshop on ML
958* <!Anchor(PLDI)> PLDI = Conference on Programming Language Design and Implementation
959* <!Anchor(POPL)> POPL = Symposium on Principles of Programming Languages
960* <!Anchor(PPDP)> PPDP = International Conference on Principles and Practice of Declarative Programming
961* <!Anchor(PPoPP)> PPoPP = Principles and Practice of Parallel Programming
962* <!Anchor(TCS)> TCS = IFIP International Conference on Theoretical Computer Science
963* <!Anchor(TIC)> TIC = Types in Compilation
964* <!Anchor(TLDI)> TLDI = Workshop on Types in Language Design and Implementation
965* <!Anchor(TOPLAS)> TOPLAS = Transactions on Programming Languages and Systems
966* <!Anchor(TPHOLs)> TPHOLs = International Conference on Theorem Proving in Higher Order Logics