How to reference F# in a research paper?
If you're writing an academic paper or journal, what should you reference for F#? Well, of course it's up to you! :-) But the topic came up here at MSR Cambridge this evening (after all, it is that time of year - POPL deadline!)
Here are some options. I've included a BibTex reference for Expert F# further below since it's not so easy to find an auto-generated one on the usual sites.
- For F# as a language,
- I recommend referencing either Expert F# (for the earliest, end-to-end description of the language) or Expert F# 2.0 (for a more up-to-date reference), or Expert F# 3.0 (for an even more up-to-date reference)
- You could also reference the (informal) F# Language Specification
- You could also reference the MSDN documentation for F#
.
- For F# quotations
- The earliest reference is Leveraging .NET meta-programming components from F#: integrated queries and interoperable heterogeneous execution.
- The feature changed substantially after this - if you want a more up-to-date reference of the actual language feature then probably use Expert F# 2.0, Chapter 9 or the MSDN documentation
.
- For F# active patterns,
- The earliest reference is this blog entry, from 16 September 2006 (for those intersted, that's around about the same time as Scala's extractors).
- The work was then published as Extensible pattern matching via a lightweight language extension
.
- For Try F#,
- The website, of course, www.tryfsharp.org
- There is a short paper called Browser-based software for technology transfer
.
- For F# asynchronous programming (and to some extent C# "await", and indeed for any language integrated value-based asynchronous programming),
- The earliest reference is Chapter 13 of Expert F# from 2007.
- The paper to reference is The F# Asynchronous Programming Model from 2010
.
- For F# Type Providers and Information Rich Progrmaming,
- For an accessible academic paper see <tomasp.net/academic/papers/inforich/>, Themes in Information-Rich Functional Programming for Internet-Scale Data Sources, In Proceedings of Data Driven Functional Programming Workshop 2013 .
- For the most complete exposition see the Microsoft Research Tech Report MSR-TR-2012-101, F#3.0 - Strongly-Typed Language Support for Internet-Scale Information Sources .
- For the earliest reference you should use this talk, The Future of F#: Data and Services at your Finger Tips from 2010.
- For a more up-to-date lecture you could use F# 3.0: data, services, Web, cloud, at your fingertips, from 2011
- For a paper reference you should use Writing F# Type Providers with the F# 3.0 Developer Preview - An Introductory Guide and Samples referencing authors Don Syme and Keith Battocchi.
- .
- The F# "first-class-event" programming model is related to both asynchronous programming and is a precursor and direct inspiration to Rx.
- The essence of first-class events was first described in a blog post from March 2006. Simplicity and Compositionality in Asynchronous Programming through First Class Events. You can also use the "tinyurl" <tinyurl.com/composingevents>
- You can also reference Rx itself
.
- For units-of-measure in F#
- The early reference is Programming Languages and Dimensions , by Andrew Kennedy.
- A later theoretical reference is Relational parametricity and units of measure .
- The version that made its way into F# can be referenced either by referencing these, or Andrew Kennedy's excellent lecture notes Types for Units-of-Measure: Theory and Practice, Andrew Kennedy. Lecture notes , for CEFP'09, Revised July 2010, to appear in LNCS .
- You can also reference some book that describes units of measure, e.g. Expert F# 2.0.
.
- For F# computation expressions
- The earliest reference is Expert F#, 2007 (see above)
- The best paper reference is Syntax Matters: Writing abstract computations in F#
- For .NET, C# and F# Generics, a still-unrivalled system for efficient, unboxed representations combined with generic code and dynamic loading,
- the earliest academic reference you should reference Design and Implementation of Generics for the .NET Common Language Runtime .
- There are a number of other options on Andrew Kennedy's summary of the publications related to C# and .NET Generics.
.
- For that bit of magic in F# called value recursion,
- This is described in the paper Initializing Mutually Referential Abstract Objects: The Value Recursion Challenge.
- It is referenced in a nice way by papers like this one, but the reference systems don't seem to pick up the existence of the paper being referenced!
.
- For some other interesting related papers, primarily by Tomas Petricek, try these:
Here is a bibtex entry for Expert F#, given here because again the academic reference systems don't seem to track books very well!
@book {springerlink:10.1007/978-1-4302-0285-1_19,
author = {Syme, Don and Granicz, Adam and Cisternino, Antonio},
title = {Expert F#},
publisher = {Apress},
isbn = {978-1-4302-0285-1},
url = {dx.doi.org/10.1007/978-1-4302-0285-1_19},
year = {2007} }
Enjoy!
Don