<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/range-as-a-functor-yr65thj9n" -->

---
title: Range as a functor | daily.dev
description: This article explores the concept of ranges as functors in Haskell, F#, and C#, and how different elements of the range can be mapped. It discusses the default...
canonical: https://daily.dev/posts/range-as-a-functor-yr65thj9n
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Range as a functor | daily.dev
og:description: This article explores the concept of ranges as functors in Haskell, F#, and C#, and how different elements of the range can be mapped. It discusses the default...
og:url: https://daily.dev/posts/range-as-a-functor-yr65thj9n
og:image: https://api.daily.dev/og/posts/YR65tHj9n.png
og:image:alt: Range as a functor
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Range as a functor

**[ploeh blog](https://daily.dev/sources/ploeh)** · 12 min read · 0 upvotes · 0 comments

## Summary

This article explores the concept of ranges as functors in Haskell, F#, and C#, and how different elements of the range can be mapped. It discusses the default functor instances for pairs in Haskell, introduces the Data.Functor.Product module, and provides examples of how ranges can be projected and transformed. The article emphasizes that a functor is defined by how it follows the functor laws, even if the results may seem counter-intuitive in some cases.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://blog.ploeh.dk/2024/02/12/range-as-a-functor/>

## Similar posts on daily.dev

- [Don’t just attend KubeCon \+ CloudNativeCon, Merge Forward your experience\!](https://daily.dev/posts/don-t-just-attend-kubecon-cloudnativecon-merge-forward-your-experience--l0rpp73x8) · CNCF · 1 upvotes · 0 comments
- [Announcing H2 2026 KCDs](https://daily.dev/posts/announcing-h2-2026-kcds-m96goajm1) · CNCF · 1 upvotes · 0 comments
- [Two months of Open Community Groups](https://daily.dev/posts/two-months-of-open-community-groups-asf52zhbs) · CNCF · 0 upvotes · 0 comments

---

Tags: [#c#](https://daily.dev/tags/c#), [#fsharp](https://daily.dev/tags/fsharp), [#haskell](https://daily.dev/tags/haskell)

[View this post on daily.dev](https://daily.dev/posts/range-as-a-functor-yr65thj9n)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Range as a functor","url":"https://daily.dev/posts/range-as-a-functor-yr65thj9n","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/range-as-a-functor-yr65thj9n"},"datePublished":"2024-02-12T07:05:07.377Z","dateModified":"2026-05-14T02:15:11.119Z","description":"This article explores the concept of ranges as functors in Haskell, F#, and C#, and how different elements of the range can be mapped. It discusses the default...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/7729d7d4fd75158dbdafc2df0d4d5afe?_a=AQAEufR","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/7729d7d4fd75158dbdafc2df0d4d5afe?_a=AQAEufR","isAccessibleForFree":true,"articleSection":"ploeh blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"ploeh blog","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/0645fe7a0b9f40ba9ef17f7a7b49e893","url":"https://daily.dev/sources/ploeh"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/range-as-a-functor-yr65thj9n","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"c#,fsharp,haskell","timeRequired":"PT12M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"ploeh blog","item":"https://daily.dev/sources/ploeh"},{"@type":"ListItem","position":3,"name":"Range as a functor"}]}
```

