F Sharp Programming/Notes for Contributors

Would-be contributors are asked to observe the following:


 * We aim to present functional programming in F# in a simple manner. Many texts go into great detail about the theoretical aspects of FP (e.g. lambda calculus) fairly early on which is :
 * distracting to beginners who assume that functional programming is for "boffins" only.
 * unnecessary for learning how to use functional programming techniques.
 * Ensure that you only use a language construct or concept after it has been explained. It is the task of any tutorial to split things up into digestable chunks. This may mean explaining or demonstrating things in a clumsier or less general way than you would like. So be it.
 * Do not treat the existing text or structure as sacrosanct. If it would be better done another way then by all means do it. Remember that WikiBooks are under version control, so any mistake can always be backed out. (Having said that, major changes should probably be discussed first).

Additionally topics should be organized in a way that makes sense to first-time programmers and those who have no prior experience with functional programming languages. In particular:


 * Readers should be able to start at the beginning of this book and understand each section. No page should reference code or language constructs before they are properly introduced.
 * Each section should build on prior sections. In other words, this book is meant to be read in serial format: from start to finish. Readers are not expected to understand code or concepts by skipping over material.
 * An emphasis should be placed on explaining writing F# code properly, rather than on syntax alone. This is extremely important, but unfortunately overlooked in many programming tutorials on the web. There's no real point learning F# if programmers only intend to transcribe C++ in a different syntax; mastering this language means mastering its idioms and functional programming style.
 * Its good for articles to have a high density of short, explanatory code samples. Always accompany new concepts with code that that reader can experiment with.

The text of this page is adapted from the page for Haskell.