DEV Community

Cover image for F#'s Stack Overflow community is amazing
André Slupik
André Slupik

Posted on

4 2

F#'s Stack Overflow community is amazing

I recently asked a question about F# syntax on Stack Overflow. It seemed like a weird edge case with indentation, and I did not expect many people to have encountered this; if they did, they were unlikely to know the answer as it would be quite technical. Still, I wanted to do due diligence before opening an issue on the F# compiler repo.

// This is just an alias of |>
let inline (|>!) (a: 'T) (f: 'T -> 'U) = f a  

Some 5
|> function
| Some b -> 
    b
| None ->
    0
|>! printfn "%d" // FS0001: The type 'int' does not match the type 'unit'

// if you replace |>! with |> it compiles, even though
// it's literally the same operator
// seriously, who's going to know the answer to this
// or so I thought
Enter fullscreen mode Exit fullscreen mode

Lo and behold, it had already been asked, and already had a great, detailed answer by user Fyodor Soikin. He pointed me to it literally within minutes of my post. I was amazed.

For the curious, a short version of it would be this. While a human reads the above as:

Some 5
|> (function
    | Some b -> b
    | None -> 0)
|>! printfn "%d"
Enter fullscreen mode Exit fullscreen mode

Because my operator has 3 characters instead of 2, this pushes the printfn one space, right under the 0 above, and F# interprets it as:

Some 5
|> function
| Some b -> 
    b // this is an int
| None ->
    0 |>! printfn "%d" // this is unit, so the types mismatch
Enter fullscreen mode Exit fullscreen mode

But that's not really the point of this blog post; see the linked question for the juicy technical details.

I've had this experience several times now over my many years of using F#, where I'll ask something simple and then get an answer from someone like e.g. Tomas Petricek, just to name one, with great thought and care, rigorous detail and technical clarity. The level of passion and knowledge demonstrated by many F# community members never ceases to impress me. Even compared to other great SO communities, F#'s feels more friendly, passionate and technically proficient.

Coming from more mainstream languages, one might think moving to a smaller community would make it harder to find support. I think the F# community demonstrates that's not about quantity but quality.

Image of Datadog

The Future of AI, LLMs, and Observability on Google Cloud

Datadog sat down with Google’s Director of AI to discuss the current and future states of AI, ML, and LLMs on Google Cloud. Discover 7 key insights for technical leaders, covering everything from upskilling teams to observability best practices

Learn More

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay