FSharp.Formatting


Literate Markdown side-by-side example

Literate Markdown
=================

This file demonstrates how to write Markdown document with 
embedded F# snippets that can be transformed into nice HTML 
using the `literate.fsx` script from the [F# Formatting
package](http://tpetricek.github.com/FSharp.Formatting).

In this case, the document itself is a valid Markdown and 
you can use standard Markdown features to format the text:

 - Here is an example of unordered list and...
 - Text formatting including **bold** and _emphasis_

For more information, see the [Markdown][md] reference.

 [md]: http://daringfireball.net/projects/markdown


Writing F# code
---------------
In standard Markdown, you can include code snippets by 
writing a block indented by four spaces and the code 
snippet will be turned into a `<pre>` element. If you do 
the same using Literate F# tool, the code is turned into
a nicely formatted F# snippet:

    /// The Hello World of functional languages!
    let rec factorial x = 
      if x = 0 then 1 
      else x * (factorial (x - 1))

    let f10 = factorial 10


Hiding code
-----------

If you want to include some code in the source code, 
but omit it from the output, you can use the `hide` 
command. You can also use `module=...` to specify that 
the snippet should be placed in a separate module 
(e.g. to avoid duplicate definitions).

    [hide, module=Hidden]
    /// This is a hidden answer
    let answer = 42

The value will be deffined in the F# code that is 
processed and so you can use it from other (visible) 
code and get correct tool tips:

    let answer = Hidden.answer


Including other snippets
------------------------

When writing literate programs as Markdown documents, 
you can also include snippets in other languages. 
These will not be colorized and processed as F# 
code samples:

    [lang=csharp]
    Console.WriteLine("Hello world!");

This snippet is turned into a `pre` element with the
`lang` attribute set to `csharp`.

Literate Markdown

This file demonstrates how to write Markdown document with embedded F# snippets that can be transformed into nice HTML using the literate.fsx script from the F# Formatting package.

In this case, the document itself is a valid Markdown and you can use standard Markdown features to format the text:

  • Here is an example of unordered list and...
  • Text formatting including bold and emphasis

For more information, see the Markdown reference.

Writing F# code

In standard Markdown, you can include code snippets by writing a block indented by four spaces and the code snippet will be turned into a <pre> element. If you do the same using Literate F# tool, the code is turned into a nicely formatted F# snippet:

1: 
2: 
3: 
4: 
5: 
6: 
/// The Hello World of functional languages!
let rec factorial x = 
  if x = 0 then 1 
  else x * (factorial (x - 1))

let f10 = factorial 10

Hiding code

If you want to include some code in the source code, but omit it from the output, you can use the hide command. You can also use module=... to specify that the snippet should be placed in a separate module (e.g. to avoid duplicate definitions).

The value will be deffined in the F# code that is processed and so you can use it from other (visible) code and get correct tool tips:

1: 
let answer = Hidden.answer

Including other snippets

When writing literate programs as Markdown documents, you can also include snippets in other languages. These will not be colorized and processed as F# code samples:

1: 
Console.WriteLine("Hello world!");

This snippet is turned into a pre element with the lang attribute set to csharp.

val factorial : x:int -> int

Full name: sidemarkdown.factorial


 The Hello World of functional languages!
val x : int
val f10 : int

Full name: sidemarkdown.f10
val answer : int

Full name: sidemarkdown.answer
module Hidden

from sidemarkdown
val answer : int

Full name: sidemarkdown.Hidden.answer


 This is a hidden answer
Fork me on GitHub