# F#

Published articles for F#.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Microsoft Releases .NET 11 RC1 with Go-Live Support, C# 15 and F# 11 as Default Language Versions

DevFeed: [Microsoft Releases .NET 11 RC1 with Go-Live Support, C# 15 and F# 11 as Default Language Versions](<https://devfeed.tech/articles/microsoft-releases-net-11-rc1-with-go-live-support-c-15-and-f-11-as-default-language-versions-26600.md>)

Original publisher: [Read original article](<https://www.infoq.com/news/2026/09/dotnet-11-rc-1-release/>)

Author: Almir Vuk

Published: 2026-09-15T07:11:00Z

Content type: news

Language: en

Sources: [InfoQ](<https://devfeed.tech/sources/infoq.md>)

Topics: [.NET 11](<https://devfeed.tech/topics/net-11.md>), [C# 15](<https://devfeed.tech/topics/c-sharp-15.md>), [Microsoft](<https://devfeed.tech/topics/microsoft.md>), [releases](<https://devfeed.tech/topics/releases.md>), [ASP.NET Core](<https://devfeed.tech/topics/asp-net-core.md>), [F#](<https://devfeed.tech/topics/fsharp.md>), [SignalR](<https://devfeed.tech/topics/signalr.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>), [.NET MAUI](<https://devfeed.tech/topics/net-maui.md>), [native aot](<https://devfeed.tech/topics/native-aot.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [asp-net-core](<https://devfeed.tech/tags/asp-net-core.md>), [c-sharp-15](<https://devfeed.tech/tags/c-sharp-15.md>), [development](<https://devfeed.tech/tags/development.md>), [dotnet-11-rc-1-release](<https://devfeed.tech/tags/dotnet-11-rc-1-release.md>), [f-sharp](<https://devfeed.tech/tags/f-sharp.md>), [ios](<https://devfeed.tech/tags/ios.md>), [macos](<https://devfeed.tech/tags/macos.md>), [microsoft](<https://devfeed.tech/tags/microsoft.md>), [native-aot](<https://devfeed.tech/tags/native-aot.md>), [net](<https://devfeed.tech/tags/net.md>), [net-10](<https://devfeed.tech/tags/net-10.md>), [net-11](<https://devfeed.tech/tags/net-11.md>), [net-9](<https://devfeed.tech/tags/net-9.md>), [net-core](<https://devfeed.tech/tags/net-core.md>), [net-maui](<https://devfeed.tech/tags/net-maui.md>), [news](<https://devfeed.tech/tags/news.md>), [releases](<https://devfeed.tech/tags/releases.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [signalr](<https://devfeed.tech/tags/signalr.md>)

### AI overview

Microsoft released .NET 11 Release Candidate 1 with go-live support for production use. It makes C# 15 and F# 11 the default language versions and stabilizes features from the preview cycle. The release also extends testing across mobile and desktop targets, updates SignalR authentication refresh APIs, and adds SDK, ASP.NET Core, Blazor, and Native AOT-related improvements.

### Source excerpt

Last week, Microsoft has released .NET 11 Release Candidate 1, the first release candidate of the cycle, shipping with a go-live support license for production use. The release makes C# 15 and F# 11 the default language versions, extends dotnet test to mobile and desktop targets, finalizes the SignalR authentication refresh APIs, and improves Android build times in .NET MAUI. By Almir Vuk

## Announcing .NET 11 Release Candidate 1

DevFeed: [Announcing .NET 11 Release Candidate 1](<https://devfeed.tech/articles/announcing-net-11-release-candidate-1-2945.md>)

Original publisher: [Read original article](<https://devblogs.microsoft.com/dotnet/dotnet-11-rc-1/>)

Author: .NET Team

Published: 2026-09-08T21:30:00Z

Content type: release

Language: en

Sources: [.NET Blog](<https://devfeed.tech/sources/net-blog.md>)

Topics: [.NET](<https://devfeed.tech/topics/net.md>), [WinForms](<https://devfeed.tech/topics/winforms.md>)

Tags: [announcements](<https://devfeed.tech/tags/announcements.md>), [asp-net-core](<https://devfeed.tech/tags/asp-net-core.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [f-sharp](<https://devfeed.tech/tags/f-sharp.md>), [featured](<https://devfeed.tech/tags/featured.md>), [net](<https://devfeed.tech/tags/net.md>), [net-11](<https://devfeed.tech/tags/net-11.md>), [net-maui](<https://devfeed.tech/tags/net-maui.md>), [nuget](<https://devfeed.tech/tags/nuget.md>), [production](<https://devfeed.tech/tags/production.md>), [release](<https://devfeed.tech/tags/release.md>), [release-notes](<https://devfeed.tech/tags/release-notes.md>), [updates](<https://devfeed.tech/tags/updates.md>), [visual-studio](<https://devfeed.tech/tags/visual-studio.md>), [visual-studio-2026](<https://devfeed.tech/tags/visual-studio-2026.md>), [windows](<https://devfeed.tech/tags/windows.md>), [winforms](<https://devfeed.tech/tags/winforms.md>)

### AI overview

.NET 11 Release Candidate 1 is available with a go-live support license. It includes updates across the runtime, SDK, MSBuild, NuGet, C#, F#, ASP.NET Core, .NET MAUI, and Windows Forms.

### Source excerpt

.NET 11 Release Candidate 1 is available with improvements across libraries, runtime, SDK, MSBuild, NuGet, C#, F#, ASP.NET Core, .NET MAUI, and Windows Forms. The post Announcing .NET 11 Release Candidate 1 appeared first on .NET Blog.

## Native .NET Buildpack Support is Now Available on App Platform

DevFeed: [Native .NET Buildpack Support is Now Available on App Platform](<https://devfeed.tech/articles/native-net-buildpack-support-is-now-available-on-app-platform-19914.md>)

Original publisher: [Read original article](<https://www.digitalocean.com/blog/net-buildpack-support-app-platform>)

Author: Bikram Gupta

Published: 2026-03-05T21:21:25Z

Content type: release

Language: en

Sources: [DigitalOcean](<https://devfeed.tech/sources/digitalocean.md>)

Topics: [Digital Ocean](<https://devfeed.tech/topics/digital-ocean.md>), [.NET](<https://devfeed.tech/topics/net.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [SDK](<https://devfeed.tech/topics/sdk.md>), [Dockerfile](<https://devfeed.tech/topics/dockerfile.md>), [Git](<https://devfeed.tech/topics/git.md>), [ASP.NET](<https://devfeed.tech/topics/aspnet.md>), [NuGet](<https://devfeed.tech/topics/nuget.md>)

Tags: [asp-net-core](<https://devfeed.tech/tags/asp-net-core.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [digitalocean](<https://devfeed.tech/tags/digitalocean.md>), [dockerfiles](<https://devfeed.tech/tags/dockerfiles.md>), [dotnet](<https://devfeed.tech/tags/dotnet.md>), [f-sharp](<https://devfeed.tech/tags/f-sharp.md>), [git](<https://devfeed.tech/tags/git.md>), [net](<https://devfeed.tech/tags/net.md>), [product-updates](<https://devfeed.tech/tags/product-updates.md>), [release](<https://devfeed.tech/tags/release.md>), [sdk](<https://devfeed.tech/tags/sdk.md>)

### AI overview

DigitalOcean App Platform now supports native .NET buildpacks, allowing developers to deploy .NET applications from Git repositories without maintaining Dockerfiles. The platform detects the project, selects the SDK version, restores dependencies, and builds the application for production.

### Source excerpt

The .NET ecosystem continues to power a significant share of enterprise and cloud-native applications, from web APIs and microservices to full-stack applications built with ASP.NET Core. Developers building with C#, F#, and Visual Basic need a deployment experience that matches the productivity of the framework itself: push code, and let the platform handle the rest. Today, we're excited to announce native .NET buildpack support on DigitalOcean App Platform. You can now deploy your .NET applications directly from a Git repository without writing or maintaining Dockerfiles. App Platform automatically detects your .NET project, installs the correct SDK version, and builds your application for production. Benefits Zero Configuration: Push your .NET code to a Git repository, and App Platform handles runtime detection, SDK installation, and build configuration automatically--no Dockerfile required. Multi-Language Support: Build applications in C#, Visual Basic, or F# using the .NET and ASP.NET Core frameworks, all with the same streamlined deployment experience. Automatic SDK Management: App Platform selects the appropriate .NET SDK version based on your project's TargetFramework or global.json configuration, supporting .NET 8.0, 9.0, and 10.0. Production-Ready Defaults: The buildpack compiles with the Release configuration by default and automatically detects ASP.NET Core web applications to configure the correct process type. How Detection Works Once you connect your Git repository, App Platform identifies your application as a .NET project by looking for specific files in your repository root. App Platform confirms a .NET application if it detects any of the following: Solution files: *.sln, *.slnx Project files: *.csproj, *.vbproj, *.fsproj File-based apps: *.cs Once detected, the buildpack takes over: SDK Detection: Determines the required .NET SDK version from your TargetFramework property or global.json file Dependency Restore: Runs dotnet restore to fetch NuGet pa

## .NET on Heroku: Now Generally Available

DevFeed: [.NET on Heroku: Now Generally Available](<https://devfeed.tech/articles/net-on-heroku-now-generally-available-26396.md>)

Original publisher: [Read original article](<https://www.heroku.com/blog/dotnet-now-generally-available/>)

Author: Rune Soerensen

Published: 2025-04-02T06:56:00Z

Content type: release

Language: en

Sources: [Heroku](<https://devfeed.tech/sources/heroku.md>)

Topics: [Heroku](<https://devfeed.tech/topics/heroku.md>), [.NET](<https://devfeed.tech/topics/net.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [ASP.NET Core](<https://devfeed.tech/topics/asp-net-core.md>)

Tags: [announce](<https://devfeed.tech/tags/announce.md>), [asp-net](<https://devfeed.tech/tags/asp-net.md>), [asp-net-core](<https://devfeed.tech/tags/asp-net-core.md>), [buildpacks](<https://devfeed.tech/tags/buildpacks.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [f-sharp](<https://devfeed.tech/tags/f-sharp.md>), [heroku](<https://devfeed.tech/tags/heroku.md>), [languages](<https://devfeed.tech/tags/languages.md>), [net](<https://devfeed.tech/tags/net.md>), [news](<https://devfeed.tech/tags/news.md>), [sdk](<https://devfeed.tech/tags/sdk.md>)

### AI overview

Heroku announces that .NET support, previously in beta, is now generally available. The release provides production support, documentation, support services, automatic build and deployment behavior, and support for C#, F#, Visual Basic, and ASP.NET Core applications.

### Source excerpt

It's never been a more exciting time to be a .NET developer. With .NET (formerly known as .NET Core) approaching its 10-year anniversary this November, the platform has evolved into a powerful, cross-platform ecosystem, embracing modern development practices and powering a vast array of applications. Today, we're thrilled to announce that .NET support on Heroku, [...] The post .NET on Heroku: Now Generally Available appeared first on Heroku.

## .NET Support on Heroku

DevFeed: [.NET Support on Heroku](<https://devfeed.tech/articles/net-support-on-heroku-26397.md>)

Original publisher: [Read original article](<https://www.heroku.com/blog/dotnet-support-on-heroku/>)

Author: Rune Soerensen

Published: 2024-12-03T00:00:00Z

Content type: release

Language: en

Sources: [Heroku](<https://devfeed.tech/sources/heroku.md>)

Topics: [Heroku](<https://devfeed.tech/topics/heroku.md>), [.NET](<https://devfeed.tech/topics/net.md>), [ASP.NET Core](<https://devfeed.tech/topics/asp-net-core.md>), [Blazor](<https://devfeed.tech/topics/blazor.md>), [C#](<https://devfeed.tech/topics/csharp.md>), [F#](<https://devfeed.tech/topics/fsharp.md>), [Visual Basic](<https://devfeed.tech/topics/visual-basic.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [announce](<https://devfeed.tech/tags/announce.md>), [apis](<https://devfeed.tech/tags/apis.md>), [app](<https://devfeed.tech/tags/app.md>), [asp-net](<https://devfeed.tech/tags/asp-net.md>), [asp-net-core](<https://devfeed.tech/tags/asp-net-core.md>), [blazor](<https://devfeed.tech/tags/blazor.md>), [buildpacks](<https://devfeed.tech/tags/buildpacks.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [can](<https://devfeed.tech/tags/can.md>), [community](<https://devfeed.tech/tags/community.md>), [core](<https://devfeed.tech/tags/core.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [deploy](<https://devfeed.tech/tags/deploy.md>), [developers](<https://devfeed.tech/tags/developers.md>), [f-sharp](<https://devfeed.tech/tags/f-sharp.md>), [heroku](<https://devfeed.tech/tags/heroku.md>), [high-performance](<https://devfeed.tech/tags/high-performance.md>), [languages](<https://devfeed.tech/tags/languages.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [net](<https://devfeed.tech/tags/net.md>), [news](<https://devfeed.tech/tags/news.md>), [nextgen](<https://devfeed.tech/tags/nextgen.md>), [platform](<https://devfeed.tech/tags/platform.md>)

### AI overview

Heroku announces that official .NET support is entering public beta. Developers can build and deploy C#, F#, and Visual Basic applications using frameworks including ASP.NET Core and Blazor. The support includes a buildpack, documentation, testing, and guidance for deploying applications, including Blazor apps with Heroku Postgres.

### Source excerpt

We're excited to announce that official support for .NET on Heroku is entering public beta starting today. Developers can now build and deploy applications in C#, F#, and Visual Basic, using frameworks like ASP.NET Core and Blazor, all with the simplicity and flexibility of the Heroku platform. .NET has long been one of the most [...] The post .NET Support on Heroku appeared first on Heroku.

## Gradient descent: back to basics with F# and C#

DevFeed: [Gradient descent: back to basics with F# and C#](<https://devfeed.tech/articles/gradient-descent-back-to-basics-with-f-and-c-38430.md>)

Original publisher: [Read original article](<https://khmylov.com/2023/02/gradient-descent-engine/>)

Author: Andrew Khmylov

Published: 2023-02-02T00:00:00Z

Content type: tutorial

Language: en

Sources: [Despite the odds](<https://devfeed.tech/sources/despite-the-odds.md>)

Topics: [C#](<https://devfeed.tech/topics/csharp.md>), [F#](<https://devfeed.tech/topics/fsharp.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Deep neural networks](<https://devfeed.tech/topics/deep-neural-networks.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [code](<https://devfeed.tech/tags/code.md>), [f-sharp](<https://devfeed.tech/tags/f-sharp.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [neural-networks](<https://devfeed.tech/tags/neural-networks.md>)

### AI overview

An overview of building a gradient descent engine from scratch, with discussion of using F# and C# and a simplified explanation of neural network training.

### Source excerpt

After dabbling with high-level AI tools recently, I wanted to revisit the basics and look under the hood. As they say, the best way to learn something is to build it. I've been following wonderful "from scratch" videos from Andrej Karpathy, where he starts with the essence of all modern AI architectures: gradient descent engine. So, I decided to keep along and build my own engine at https://github.com/khmylov/dumb-gradient, and this article is an overview of its implementation, and some thoughts on using F# and C# for a task like that. Side note: look back at university I completely forgot that one of my university projects back in 2010 was actually about building an image recognition neural network! It was funny to look back at the source code from that era. Turns out, the core ideas are still relevant, it's just computational advances, new modelling discoveries and infrastructure around them that allowed so much progress in the last decade. I'm not going to recite all the details here, the main (much simplified) ideas to comprehend are as follows (I recommend Deep Learning with PyTorch, fast.ai course, and Huggingface course to get a much deeper dive into this) We can represent most real-world data, like text, images, sounds, as vast arrays of numbers Turns out, we can model a lot of "intelligence" tasks (natural language processing, image recognition, etc.) with sophisticated mathematical functions operating on our numeric representation of real-world data Universal approximation theorem was a break-through postulating that even most sophisticated functions can be actually modeled by combining only primitive linear f(x) = a * x + b and basic non-linear functions such as tanh into some inter-connected network (here come the inevitable neuron models and neural networks), we just need a huge number of them to do that, and some computation power to figure out the arguments for those functions "Training" such networks is figuring out how to tweak randomly initialized

## Serverless v1.17 - F# service template, deployment skipping when files not changed added

DevFeed: [Serverless v1.17 - F# service template, deployment skipping when files not changed added](<https://devfeed.tech/articles/serverless-v1-17-f-service-template-deployment-skipping-when-files-not-changed-added-14412.md>)

Original publisher: [Read original article](<https://www.serverless.com/blog/serverless-v1-17-0>)

Author: Philipp Müns

Published: 2017-07-06T00:00:00Z

Content type: release

Language: en

Sources: [Serverless Blog](<https://devfeed.tech/sources/serverless-blog.md>)

Topics: [serverless framework](<https://devfeed.tech/topics/serverless-framework.md>), [Template](<https://devfeed.tech/topics/template.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [F#](<https://devfeed.tech/topics/fsharp.md>)

Tags: [aws](<https://devfeed.tech/tags/aws.md>), [aws-lambda](<https://devfeed.tech/tags/aws-lambda.md>), [cloud-computing](<https://devfeed.tech/tags/cloud-computing.md>), [f-sharp](<https://devfeed.tech/tags/f-sharp.md>), [faas](<https://devfeed.tech/tags/faas.md>), [files](<https://devfeed.tech/tags/files.md>), [function-as-a-service](<https://devfeed.tech/tags/function-as-a-service.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [news](<https://devfeed.tech/tags/news.md>), [release](<https://devfeed.tech/tags/release.md>), [serverless](<https://devfeed.tech/tags/serverless.md>), [serverless-architecture](<https://devfeed.tech/tags/serverless-architecture.md>), [serverless-framework](<https://devfeed.tech/tags/serverless-framework.md>)

### AI overview

The Serverless Framework v1.17 release adds an F# service template and skips deployment when files have not changed, along with other updates.

### Source excerpt

F# service template, deployment skipping when files not changed and more in the Serverless Framework v1.17 release.

## An Unbiased Comparison of F# and Scala

DevFeed: [An Unbiased Comparison of F# and Scala](<https://devfeed.tech/articles/an-unbiased-comparison-of-f-and-scala-33402.md>)

Original publisher: [Read original article](<https://timkellogg.me/blog/2013/06/22/comparing-scala-to-fsharp>)

Published: 2013-06-22T00:00:00Z

Content type: comparison

Language: en

Sources: [Tim Kellogg](<https://devfeed.tech/sources/tim-kellogg.md>)

Topics: [F#](<https://devfeed.tech/topics/fsharp.md>), [Scala](<https://devfeed.tech/topics/scala.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [comparison](<https://devfeed.tech/tags/comparison.md>), [f-sharp](<https://devfeed.tech/tags/f-sharp.md>), [functional](<https://devfeed.tech/tags/functional.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [languages](<https://devfeed.tech/tags/languages.md>), [object](<https://devfeed.tech/tags/object.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [programming](<https://devfeed.tech/tags/programming.md>), [scala](<https://devfeed.tech/tags/scala.md>)

### AI overview

A developer compares F# and Scala from the perspective of a .NET developer who began working with Scala. The article argues that Scala is more approachable but less purely functional, while F# adheres more closely to functional programming principles. It also compares their object-oriented features, function definitions, currying, and partial function application.

### Source excerpt

Given my history as a .NET developer I learned Functional Programming via F#, but I just started a new job as a Scala developer. Naturally, I've been comparing the two languages and the quirks and nuances that make could make them enjoyable or problematic. To summarize quickly, I think Scala is more approachable but less "pure" than F#. Scala seems to have a diverse set of influences whereas F# tries to stick closely to proven Functional Programming basics.

## Discriminated Unions in C# Mono Compiler

DevFeed: [Discriminated Unions in C# Mono Compiler](<https://devfeed.tech/articles/discriminated-unions-in-c-mono-compiler-33391.md>)

Original publisher: [Read original article](<https://timkellogg.me/blog/2012/03/10/discriminated-unions-in-c-mono-compiler>)

Published: 2012-03-10T00:00:00Z

Content type: opinion

Language: en

Sources: [Tim Kellogg](<https://devfeed.tech/sources/tim-kellogg.md>)

Topics: [F#](<https://devfeed.tech/topics/fsharp.md>), [C#](<https://devfeed.tech/topics/csharp.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [.NET](<https://devfeed.tech/topics/net.md>), [OCaml](<https://devfeed.tech/topics/ocaml.md>)

Tags: [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [enum](<https://devfeed.tech/tags/enum.md>), [f-sharp](<https://devfeed.tech/tags/f-sharp.md>), [hashing](<https://devfeed.tech/tags/hashing.md>), [lambda](<https://devfeed.tech/tags/lambda.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

The author explores discriminated unions in F#, compares them with C# enums, and considers modifying the Mono C# compiler to support similar constructs in C#. The article presents this as an early-stage proof-of-concept idea rather than a completed implementation.

### Source excerpt

Recently I've been using F# a bit. F# is .NET's functional language (the syntax of F# 1.0 was backward compatible with OCaml, but 2.0 has diverged enough to make it more distinct). Learning F# was a huge mind-shift from the C-family of languages. Of all the features of F#, like implicit typing, tail recursion, and monads, many people list discriminated unions as their favorite.

## One Thing I Learned From F# (Nulls Are Bad)

DevFeed: [One Thing I Learned From F# (Nulls Are Bad)](<https://devfeed.tech/articles/one-thing-i-learned-from-f-nulls-are-bad-33390.md>)

Original publisher: [Read original article](<https://timkellogg.me/blog/2012/02/29/one-thing-i-learned-from-f-nulls-are>)

Published: 2012-02-29T00:00:00Z

Content type: opinion

Language: en

Sources: [Tim Kellogg](<https://devfeed.tech/sources/tim-kellogg.md>)

Topics: [F#](<https://devfeed.tech/topics/fsharp.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [C#](<https://devfeed.tech/topics/csharp.md>), [exceptions](<https://devfeed.tech/topics/exceptions.md>), [pattern matching](<https://devfeed.tech/topics/pattern-matching.md>), [Haskell](<https://devfeed.tech/topics/haskell.md>), [OCaml](<https://devfeed.tech/topics/ocaml.md>)

Tags: [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [exceptions](<https://devfeed.tech/tags/exceptions.md>), [f-sharp](<https://devfeed.tech/tags/f-sharp.md>), [functional](<https://devfeed.tech/tags/functional.md>), [pattern-matching](<https://devfeed.tech/tags/pattern-matching.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

The author reflects on learning F# while contributing to VsVim, highlighting pattern matching, discriminated unions, and F#'s option types. The article argues that using None and Some instead of null can make invalid states explicit and reduce null-related bugs.

### Source excerpt

Recently I started contributing to VsVim, a Visual Studio plugin that emulates Vim. When he was starting the project, Jared Parsons decided to write the bulk of it in F#. He did this mostly as a chance to learn a new language but also because it's a solid first class alternative to C#. For instance, F#'s features like pattern matching and discriminated unions are a natural fit for state machines like Vim.This is my first experience with a truly functional language. For those who aren't familiar with F#, it's essentially OCaml.NET (the F# book uses OCaml for it's markup syntax), but also draws roots from Haskell. It's a big mind shift from imperative and pure object oriented languages, but one I'd definitely recommend to any developer who wants to be better.Since I've been working on VsVim, I've been using F# in my spare time but C# in my regular day job. The longer I use F# the more I want C# to do what F# does. The biggest example is how F# handles nulls.In C# (and Ruby, Python, and any imperative language) most values can be null, and null is a natural state for a variable to be in. In fact (partly due to SQL), null is used whenever a value is empty or doesn't exist yet. In C# and Java, null is the default value for any member reference, you don't even need to explicitly initialize it. As a result, you often end up with a lot of null pointer exceptions due to sloppy programming. After all, it's kind of hard to remember to check for null every time you use a variable.In F#, nothing is null (that's not entirely true, but in it's natural state it's true enough). Typically you'll use options instead of null. For instance, if you have a function that fails to find or calculate something you might return null in imperative languages (and the actual value if successful). However, in F# you use an option type and return None on failure and Some value on success.Here, every time you call find(kittens) you get back an option type. This type isn't a string, so you can't just

## Ruby and .NET: Comparing Language Features and Developer Communities

DevFeed: [Ruby and .NET: Comparing Language Features and Developer Communities](<https://devfeed.tech/articles/parenthetical-thesis-on-ruby-net-or-irongem-or-whatever-the-kids-call-it-these-days-33376.md>)

Original publisher: [Read original article](<https://timkellogg.me/blog/2011/08/29/parenthetical-thesis-on-rubynet-or>)

Published: 2011-08-29T00:00:00Z

Content type: opinion

Language: en

Sources: [Tim Kellogg](<https://devfeed.tech/sources/tim-kellogg.md>)

Topics: [Ruby](<https://devfeed.tech/topics/ruby.md>), [.NET](<https://devfeed.tech/topics/net.md>), [C#](<https://devfeed.tech/topics/csharp.md>), [F#](<https://devfeed.tech/topics/fsharp.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [expression](<https://devfeed.tech/tags/expression.md>), [extension](<https://devfeed.tech/tags/extension.md>), [f-sharp](<https://devfeed.tech/tags/f-sharp.md>), [linq](<https://devfeed.tech/tags/linq.md>), [mixins](<https://devfeed.tech/tags/mixins.md>), [monkey-patching](<https://devfeed.tech/tags/monkey-patching.md>), [net](<https://devfeed.tech/tags/net.md>), [python](<https://devfeed.tech/tags/python.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [unit-tests](<https://devfeed.tech/tags/unit-tests.md>)

### AI overview

The author compares Ruby and .NET, highlighting Ruby's mixins, monkey patching, REPL, and blocks alongside C#'s type safety, LINQ, and expression trees. The author concludes that neither platform is inherently better, but prefers the Ruby community.

### Source excerpt

Since college I've always been a huge fan of dynamic languages. I was really into Python for a long time and in the past year or so I've picked up Ruby. It's well known that the open source/dynamic language world has always looked down on the .NET/Java world as some sort of inferior. While having a conversation with a colleague about ruby versus .NET I stumbled on a conclusion.Ruby has some great features like mixins, monkey patching, a REPL. I also love how blocks make closures such an accessible and natural way to program. Ruby makes easy things easy and hard things fun.On the other hand, C# is one of the most beautiful typesafe languages (although F# is gaining favor with me). Linq and expression trees provide functionality that you literally cannot reproduce in dynamic languages (it requires knowledge of types, which dynamic languages theoretically shouldn't care about). With the crazy stuff that people are doing with expression trees (building SQL statements, mapping objects, selecting properties, etc) it makes it hard to say I'd rather be doing ruby.While C# has some analogous ruby constructs (extension methods are kind of like a lesser form of monkey patching), it still suffers from some of the classical faults of static languages (there can be a lot of extra code just to deal with types and to play nicely with the compiler). At the same time, the compiler also writes tests for you (a contract states you will have these methods, yet in ruby you can't ever be completely sure they'll actually be there. Something that you'd have to write unit tests for in ruby).The conclusion I came to was that, at this point in time, there really isn't a compelling reason why ruby is better than .NET or vice versa. Except for one thing - the communities. The ruby community is nearly too much fun. In Boulder, where I live, there are several companies that host regular hackfests. There are also annual ruby conventions where people get together, socialize, and share new ideas. In