Please log in to watch this conference skillscast.
The F# language encourages you to precisely model your domain, create succinct DSLs and write code functionally using immutable data structures. When used to build large-scale real-world systems, this produces simple code that is easy to reason about, while being joyous and productive to create.
Within the confines of an F# system, one that is fully within our control, these patterns are naturally predominant. However, the real-world is messy, and any useful system needs to go beyond its boundaries and interact with outside systems such as web servers, database servers, distributed application orchestration frameworks and message brokers. Such interactions, while empowered by the powerful .NET ecosystem, can be jarring to an F# developer, as they do not speak the same patterns that we become accustomed to.
We will explore some approaches in abstracting away these "impure" systems, in such a way so it feels natural to interact with them using F#. These are presented using a few real-world examples:
- F# and Databases: persisting and evolving rich domain models using relational databases, without converting to laborious SQL
- F# and Actors: creating distributed applications of massive scale and zero single points of failures using an actor framework such as Orleans
- F# on the web: creating seamless client/server web and mobile applications without thinking of APIs
The take-away from this session would be to encourage thinking in terms of creating F#-friendly DSLs on top of impure systems, such that application developers can focus more on actually representing business logic and workflows, as opposed to obsessing over mundane details such as persistence, scaling and APIs.
YOU MAY ALSO LIKE:
Using F# to Structure an Island of Simplicity
Tejas Viswanath
Tejas is co-founder & CTO of Chaldal.com, the world's first 1-hour grocery delivery service and pioneers of the now-ubiquitous concept of urban micro-warehousing. Backed by The World Bank and Y Combinator, Chaldal's mission is to deploy technology that helps develop the developing world. They work with various government development agencies and the UN World Food Programme, and use F# to build systems that connect farmers, redefine supply chains and support refugee camps.