Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 13 additions & 6 deletions .markdownlint-cli2.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,26 @@
"config": {
// Enable all rules by default
"default": true,
// Line length: increase default from 80
"MD013": {
"line_length": 100,
"code_blocks": false,
"tables": false
// Heading increment: disabled because Jekyll layouts provide h1;
// content pages intentionally start at h2/h3
"MD001": false,
// Heading style: standardize on atx (no closing hashes)
"MD003": {
"style": "atx"
},
// Line length: disabled
"MD013": false,
// Allow duplicate headers in different nested sections
"MD024": {
"allow_different_nesting": true
},
// Allow inline HTML
"MD033": false,
// First line in a file doesn't need to be a top-level header
"MD041": false
"MD041": false,
// Code block style: standardize on fenced
"MD046": {
"style": "fenced"
}
}
}
40 changes: 21 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,24 +34,26 @@ Note also the use of an excerpt separator `<!--more-->`. This is to ensure that

Example:

---
order: 0
title: HelloWorld.fs
excerpt_separator: <!--more-->
code: |
let hello name =
printfn $"Hello, {name}!"

hello "github"
---
## I am the title

I am the introdoctory paragraph. Mobile and desktop users can see me.
<!--more-->
- **Desktop users** can see this extra content
- **Mobile users** will miss out

Not ideal, but oh well.
```yaml
---
order: 0
title: HelloWorld.fs
excerpt_separator: <!--more-->
code: |
let hello name =
printfn $"Hello, {name}!"

hello "github"
---
## I am the title

I am the introdoctory paragraph. Mobile and desktop users can see me.
<!--more-->
- **Desktop users** can see this extra content
- **Mobile users** will miss out

Not ideal, but oh well.
```

## Developing locally

Expand All @@ -71,7 +73,7 @@ If not using VSCode, consult your preferred IDE's documentation for instructions

You may need to run the following once to install TailwindCSS dependency:

```
```sh
npm i
```

Expand Down
2 changes: 1 addition & 1 deletion _books/stylish_f#_6_2022.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Why just get by in F# when you can program in style. This book goes beyond synta

_Stylish F# 6_ covers every design decision that a developer makes in constructing F# programs, helping you make the most educated and valuable design choices at every stage of code development. You will learn about the design of types and function signatures, the benefits of immutability, and the uses of partial function application. You will understand best practices for writing APIs to be used by F#, C#, and other languages. Each carefully vetted design choice is supported with compelling examples, illustrations, and rationales.

**What You Will Learn**
### What You Will Learn

- Know why, when, and how to code in immutable style
- Use collection functions, piping, and function composition to build working software quickly
Expand Down
6 changes: 3 additions & 3 deletions _testimonials/JamieDixon.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ keywords:
- open data
quote: F# makes it easy to spend your time answering interesting questions about the domain and less time answering questions about the language.
---
I did a public records request in my town of Cary, North Carolina. The dataset included appx 25,000 traffic stop records for 2012. Using F#, I did some basic statistical calculations to determine that when you are driving is much more important than where you are driving in terms of getting stopped. In fact, the term 'speed trap' is a misnomer. In addition, the data supports the notion that there is a monthly quota of tickets being given. You can read the entire analysis [here](http://jamessdixon.wordpress.com/2014/01/07/traffic-stop-analysis-using-f/)
I did a public records request in my town of Cary, North Carolina. The dataset included appx 25,000 traffic stop records for 2012. Using F#, I did some basic statistical calculations to determine that when you are driving is much more important than where you are driving in terms of getting stopped. In fact, the term 'speed trap' is a misnomer. In addition, the data supports the notion that there is a monthly quota of tickets being given. You can read the [entire analysis](http://jamessdixon.wordpress.com/2014/01/07/traffic-stop-analysis-using-f/)

Also, I created a KNN classifier using the date/time of the stop and determined that when you get stopped impacts weather you get a verbal warning versus an actual ticket. You can read the entire analysis [here](http://jamessdixon.wordpress.com/2014/01/14/traffic-stop-disposition-classification-using-f-and-knn/)
Also, I created a KNN classifier using the date/time of the stop and determined that when you get stopped impacts weather you get a verbal warning versus an actual ticket. You can read the [entire analysis](http://jamessdixon.wordpress.com/2014/01/14/traffic-stop-disposition-classification-using-f-and-knn/)

Finally, I did a public records request in the county in which I live: Wake County North Carolina. The dataset included appx 5,000 health inspection scores for 2012. Using F#, I did some basic statistical calculations to determine that there is little variance of when a restaurant gets inspected and their final score. An interesting offshoot is that some particular restaurants scored lower across all inspectors - except when head inspector did the inspection, then they actually scored better. There might an inherent cultural bias by the inspectors. You can read the entire analysis [here](http://jamessdixon.wordpress.com/2014/02/11/analysis-of-health-inspection-data-using-f/)
Finally, I did a public records request in the county in which I live: Wake County North Carolina. The dataset included appx 5,000 health inspection scores for 2012. Using F#, I did some basic statistical calculations to determine that there is little variance of when a restaurant gets inspected and their final score. An interesting offshoot is that some particular restaurants scored lower across all inspectors - except when head inspector did the inspection, then they actually scored better. There might an inherent cultural bias by the inspectors. You can read the [entire analysis](http://jamessdixon.wordpress.com/2014/02/11/analysis-of-health-inspection-data-using-f/)

F# was great because I spent less time figuring out how to answer my question and more time actually answering the question. The type providers made consuming and integrating hetrogenous datasets a snap and the pattern matching feature reduced the complexity of the code by an order of magnitude (compared to C#). Finally, by using unit tests and immutable data types, I have a bug-resistant code base that can be extended to other scenarios.
2 changes: 1 addition & 1 deletion _testimonials/anonymous-game-developer.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ Dynamic languages like Python hid the types, but sacrificed the type safety that
F# finally gives me the best of both worlds: C#'s power without manual type annotations.

I'm still a beginner (no quizzes please—I'm soaking it in slowly!),
but that rare 'this is exactly what Ive been searching for' feeling? F# delivers that. Truly refreshing.
but that rare 'this is exactly what I've been searching for' feeling? F# delivers that. Truly refreshing.
2 changes: 1 addition & 1 deletion _testimonials/goswin-1.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ keywords:
- Rhino
quote: We see great potential for F# to be used as a scripting language in CAD; it fits very well for computational design challenges in the construction industry.
---
<a href="http://www.waagner-biro.com/en/company/news-press/news/oriental-jewel-by-waagner-biro-the-domed-roof-of-the-louvre-abu-dhabi"> <img src="/img/big/goswin-waggner.png" /></a>
<a href="http://www.waagner-biro.com/en/company/news-press/news/oriental-jewel-by-waagner-biro-the-domed-roof-of-the-louvre-abu-dhabi"> <img alt="Louvre Abu Dhabi dome by Waagner Biro" src="/img/big/goswin-waggner.png" /></a>

In recent years many Architects have discovered that they can greatly enlarge their design repertoire by the use of parametric design, programming or scripting. Architects can now quickly and easily explore new geometries previously unseen in Architecture. Besides being designed in a novel way these geometries can also be exactly represented and reasoned about in terms of structural feasibility and manufacturing constraints. These facts take new geometries out of the dreams of Architects and make them real candidates for construction.

Expand Down
2 changes: 1 addition & 1 deletion _testimonials/peter-sestoft-1.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ F# has a beautiful, simple but expressive language at its core, and many powerfu
built around that core language. It can draw on all the power of the .NET libraries,
and runs on Windows, MacOS and Linux. That's the reason we have chosen F# for our
undergraduate functional programming class as well as our
undergraduate programming language class [(link)](http://www.itu.dk/people/sestoft/plc/)
undergraduate [programming language class](http://www.itu.dk/people/sestoft/plc/)
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ algorithm, expressions, patterns and other.

## [F# Cheat Sheet](https://github.com/fsprojects/fsharp-cheatsheet)

<img src="../images/thumbs/cheetsheet.png" style="float:right;margin:5px 0px 5px 25px;" />
<img alt="F# Cheat Sheet" src="../images/thumbs/cheetsheet.png" style="float:right;margin:5px 0px 5px 25px;" />

The cheat sheet is a small and concise guide to F# syntax for newcomers to get started with the language. It's available in [HTML](https://fsprojects.github.io/fsharp-cheatsheet/) and [PDF](https://fsprojects.github.io/fsharp-cheatsheet/fsharp-cheatsheet.pdf) format.

Expand Down
8 changes: 4 additions & 4 deletions guides/enterprise/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,13 @@ Many developers have posted on why they like F#:
* [Why F#?](http://davefancher.com/2013/01/27/why-f/)
* [A list of many other "Why F#" posts](https://sergeytihon.wordpress.com/2013/03/24/why-f-by-f-weekly/).

### A tour of F# features ###
### A tour of F# features

* [An introduction to F#](https://channel9.msdn.com/blogs/pdc2008/tl11) (video).
* [Why use F#?](http://fsharpforfunandprofit.com/series/why-use-fsharp.html).
This series of posts will give you a guided tour through the main features of F#.

### Low risk ways to use F# ###
### Low risk ways to use F\#

You can easily try out F# for non-critical development tasks such as testing and scripting without committing to wholesale change.

Expand Down Expand Up @@ -159,14 +159,14 @@ a safer Async library,
a built-in actor model that's easier than using threads,
safe parallelization with immutable data, and more.

#### Asynchronous programming in F# ####
#### Asynchronous programming in F\#

* [Async in C# and F#: An introduction](http://tomasp.net/blog/csharp-fsharp-async-intro.aspx/)
* [Async in C# and F#: Asynchronous gotchas in C#](http://tomasp.net/blog/csharp-async-gotchas.aspx/). Why the F# async library is safer than the C# one.
* [Writing non-blocking user-interfaces in F#](http://tomasp.net/blog/async-non-blocking-gui.aspx/)
* [Asynchronous programming: another introduction](http://fsharpforfunandprofit.com/posts/concurrency-async-and-parallel/)

#### Agents and message queues ####
#### Agents and message queues

* [An Introduction To F# Agents](http://www.developerfusion.com/article/139804/an-introduction-to-f-agents/)
* [Agents](http://fsharpforfunandprofit.com/posts/concurrency-actor-model/). Another introduction
Expand Down
4 changes: 2 additions & 2 deletions learn/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,14 @@ Whether it's your first programming language or your next, F# will transform you

### [F# for C#, Java or Python developers](http://fsharpforfunandprofit.com/)

<img src="../images/thumbs/IHeartFsharp160.png" style="float:right;margin:5px 0px 5px 25px;" />
<img alt="I Heart F#" src="../images/thumbs/IHeartFsharp160.png" style="float:right;margin:5px 0px 5px 25px;" />

Introduces you to F# and show you ways that F# can help in day-to-day development
of mainstream commercial business software.

### [F# Cheat Sheet](http://fsprojects.github.io/fsharp-cheatsheet/)

<img src="../images/thumbs/cheetsheet.png" style="float:right;margin:5px 0px 5px 25px;" />
<img alt="F# Cheat Sheet" src="../images/thumbs/cheetsheet.png" style="float:right;margin:5px 0px 5px 25px;" />

The cheat sheet is a small and concise guide to F# syntax for newcomers to get started with the language. It's available in [HTML](http://fsprojects.github.io/fsharp-cheatsheet/) and [PDF](https://fsprojects.github.io/fsharp-cheatsheet/fsharp-cheatsheet.pdf) format.

Expand Down
2 changes: 1 addition & 1 deletion specs/language-spec/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,4 +79,4 @@ The latest, working version of the F# language specification.
* The [preview RFCs beyond F# 9](https://github.com/fsharp/fslang-design/tree/master/preview)

**Note:** We're currently working on an improved version of the F# language specification
[here](https://github.com/fsharp/fslang-spec/). Contributions welcome!
[on GitHub](https://github.com/fsharp/fslang-spec/). Contributions welcome!
4 changes: 2 additions & 2 deletions teaching/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ This page lists some resources for teaching F# in formal settings.
for the course "Programs as data" that uses the functional programming concepts in F# to
teach students language concepts and implemen­tation details.

<a href="http://www.imm.dtu.dk/~mire/FSharpBook"><img src="files/fpbook.jpg" style="float:right;margin:15px;border-style:none;" /></a>
<a href="http://www.imm.dtu.dk/~mire/FSharpBook"><img alt="Functional Programming Using F# book cover" src="files/fpbook.jpg" style="float:right;margin:15px;border-style:none;" /></a>

#### [Functional Programming Using F#](http://www.imm.dtu.dk/~mire/FSharpBook)

Expand All @@ -33,7 +33,7 @@ mini-projects are found [on the book web site](http://www.imm.dtu.dk/~mire/FShar

<div style="clear:both;">&#160;</div>

<a href="http://www.amazon.com/Programming-Language-Concepts-Undergraduate-Computer/dp/1447141555"><img src="files/sestoft.png" style="float:right;margin:15px;border-style:none;" /></a>
<a href="http://www.amazon.com/Programming-Language-Concepts-Undergraduate-Computer/dp/1447141555"><img alt="Programming Language Concepts book cover" src="files/sestoft.png" style="float:right;margin:15px;border-style:none;" /></a>

#### [Programming Language Concepts](http://www.amazon.com/Programming-Language-Concepts-Undergraduate-Computer/dp/1447141555)

Expand Down
9 changes: 4 additions & 5 deletions teaching/research.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@ To add a paper to this list [edit this page](https://github.com/fsharp/fsharp.or

--------------

## The History of F #
## The History of F\# {#history-and-design}

{: #history-and-design .anchor }
{: .anchor }

### [The Early History of the F# Language](https://dl.acm.org/doi/pdf/10.1145/3386325)

Expand Down Expand Up @@ -209,9 +209,9 @@ Accelerator libraries, and dynamic native-code compilation via LINQ.

--------------

## Parallel and Distributed programming
## Parallel and Distributed programming {#distributed-and-parallel-programming}

{: #distributed-and-parallel-programming .anchor }
{: .anchor }

### [MBrace: cloud computing with monads](http://dl.acm.org/citation.cfm?id=2525531&dl=ACM&coll=DL&CFID=454202220&CFTOKEN=25283533)

Expand Down Expand Up @@ -554,7 +554,6 @@ helps to seamlessly scale into the cloud desktop and mobile web applications wit
### [GLR-based abstract parsing](http://dl.acm.org/citation.cfm?id=2556616&dl=ACM&coll=DL), [video (in russian)](http://vimeo.com/79442837)

Semen Grigorev, Saint Petersburg State University, Iakov Kirilenko, Saint Petersburg State University

_Central & Eastern European Software Engineering Conference in Russia (CEE-SECR '13) 2013_

Abstract parsing is an important step of the processing of dynamically constructed statements or string-embedded
Expand Down
10 changes: 6 additions & 4 deletions use/linux/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ dotnet fsi hello.fsx

If this is your first time using .NET, there will be a short, one-time message about using the .NET SDK. After that, you'll see the following output in your console:


Hello World from F#

```text
Hello World from F#
```

To create a project use

Expand Down Expand Up @@ -60,7 +60,9 @@ F# is supported by the [Ionide](http://ionide.io/) project.

3. Press `Ctrl+Shift+P` and enter the following to install the Ionide package for VS Code.

ext install Ionide-fsharp
```text
ext install Ionide-fsharp
```

You can also install the plugin from the plugin pane on the left-hand side.

Expand Down
14 changes: 9 additions & 5 deletions use/mac/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@ dotnet fsi hello.fsx

If this is your first time using .NET Core, there will be a short, one-time message about using the .NET SDK. After that, you'll see the following output in your console:

Hello World from F#
```text
Hello World from F#
```

To create a project use

Expand All @@ -53,13 +55,15 @@ For more information see [Getting started with the F# command line tools](https:
supporting [a lot of languages](https://code.visualstudio.com/docs/languages/overview).
F# is supported by the [Ionide](http://ionide.io/) project.

1. Install [.NET Core SDK](https://dotnet.microsoft.com/download) like in step 1.
1. Install [.NET Core SDK](https://dotnet.microsoft.com/download) like in step 1.

2. Install [Visual Studio Code](https://code.visualstudio.com/download) for macOS.
2. Install [Visual Studio Code](https://code.visualstudio.com/download) for macOS.

3. Press `Cmd+Shift+P` and enter the following to install the Ionide package for VS Code.
3. Press `Cmd+Shift+P` and enter the following to install the Ionide package for VS Code.

ext install Ionide-fsharp
```text
ext install Ionide-fsharp
```

You can also install the plugin from the plugin pane on the left-hand side.

Expand Down
Loading