Today is the day 0 of this new library I’m going to be working on now. About 2-2.5 years ago, I picked up a book about functional programming in F# for C# developers. I read it a little and decided that I just had to get my third and final internship as a software engineer undergrad in functional programming. I managed to get a job, at a company called Genetec, as a software developer which would for on embedded systems. I’ve had the chance to design and develop a actor system approach to have license plates to be seen as card swipes and integrate a physical video surveillance system into a access control software system. That was all done with F#, Ccr and other things. Moving on.
DevSharper. This library is my my own contribution to the C# community. I fell in love with functional programming features and concepts and even though C# 7.0 brings more and more functional programming features, a lot more can be done to strengthen the development process while using OO programming. One thing we should try to get rid of are null ref exception which seem to be a plague in our community. In Haskell, we have Maybes and in F#, we have options type which are basically a discriminated union. Through those structures, we can act upon whether an operation was successful or not. The use of the optional type is rather more expressive on what the programmer tries to explain in his/her code. I do think also that testing for either Some value or None(absence of value), we get quicker what’s going on.
Sometimes, we define our own extensions for Linq, we try different approaches and we get to rewriting them when we’re changing companies or changing projects. I think this approach to try to solve OO issues with functional programming is great. They’re may be other libraries but I want to focus on issues that matter to me and that can help refactor code in either development or production phase.
To follow along the project, keep an eye on the link I’ll give below. You can either star it or simply “watch” it on Github: https://github.com/Kavignon/DevSharper