C# ImmutableList<T> performance This a short story followed by simple .NET hint that can increase performance in some areas of your application in 10 times or more. In the HPS project I've implemented

.NET C# 8: switch statement At the end of January the .NET Core development team has released a new version of the .NET Core framework, .NET Core 3 preview 2. It delivers a few new

Debugging memory leaks in .NET applications I personally think that using low level debuggers is a skill that any professional .NET developer must have. I just published a course on how to use LLDB for debugging

JavaScript Node.js 10: Important Changes The recent release of the node.js is a major milestone in its development. It contains many changes in the library, bugfixes and updated v8 engine. the complete changelog is

.NET Refactoring locks into sharing immutables So if both Eric Lippert and Jon Skeet think lock free programming is only for people smarter than themselves, then I will humbly run away screaming from the idea immediately. – dodgy_coder – SO There is some truth in this quote. Lock-free is a quite

.NET Deadlock example, .NET It is actually a bit surprising, but many .NET developers have never had deadlocks in their code. Some very good developers may not have seen them for years. So it may be a good time to remind about them. One the common mistakes about

HackerRank Functional Challenges HR F#: Functions and Fractals: Sierpinski triangles The problem of drawing the Sierpinski triangles is considered to be advanced problem and it really is. The Sierpinski triangle is a fractal, constructed by recursively subdividing equilateral triangles into

HackerRank Functional Challenges HR F#: Pascal's Triangle The second problem from the Recursive subdomain is printing Pascal's Triangle for given n. Pascal's triangle is named after famous French mathematician from XVII century, Blaise Pascal. His findings on

HackerRank Functional Challenges HR F#: Computing the GCD The greatest common divisor (or GCD) of two integers is the largest positive integer that divides two of these integers. The first of the Recursion problems on the Functional track at Hackerrank is computing the GCD using the Euclidean Algorithm. In this algorythm the

F# F#: How to check that tail recursion calls are optimised The tail recursion optimisation happens when a compiler decides that instead of performing recursive function call (and add new entry to the execution stack) it is possible to use loop-like

F# Quickstart WPF F#-only app in VSCode - Part 3 How to quickly create WPF F# project was shown in the first part. FsXaml and paket was added in the second part. This part will go reactive: add ReactiveUI and show how to update the view model asynchronously from F#. This part starts where

F# Quickstart WPF F#-only app in VSCode - Part 2 The first part shown how to create a WPF F# project with simple window and its view model, build this project and run it. Now lets add FsXaml using packet, use it to create types from XAML and create user control. All by directly

Quiz The Oxford Green Belt Way problem Here is a problem for you to test your programming skills. The Oxford Green Belt Way is a 50-mile circular walk around the city. It goes through the beautiful countryside, quiet fields and friendly villages. The group of international studens on their trip to

HackerRank Functional Challenges HR F#: Compute the Area of a Polygon This is the last from the introductional problems in the Functional Programming domain on Hackerrank. This also might be most complicated among the introductionary problems: You are given the cartesian coordinates of a set of points in a 2D plane. When traversed sequentially, these

HackerRank Functional Challenges HR F#: Compute the Perimeter of a Polygon The problem of computing perimeter of the polygon is one of the easy problems, but it requires a bit more programming. You are given the cartesian coordinates of a set of points in a 2D plane. When traversed sequentially, these points form a Polygon,

HackerRank Functional Challenges HR F#: Functions or Not? The Functions or Not? problem is defined as follows: You are given a set of unique (x, y) ordered pairs constituting a relation. For each of these relations, identify whether they may possibly represent a valid function or not. On a new line for

HackerRank Functional Challenges HR F#: Lambda Calculus - Evaluating Expressions #5 This is even more simple than the previous one. Compute the value of λx.λy.y. The answer is 0. See the same Church numerals table.

HackerRank Functional Challenges HR F#: Lambda Calculus - Evaluating Expressions #4 This problem just checks how well you have got the idea of Church encoding while solving the previous problem. Compute the value of λx.λy.x(xy). Just by looking at the definition of the Church numerals it is easy to see that this

HackerRank Functional Challenges HR F#: Lambda Calculus - Evaluating Expressions #3 Although the Lambda Calculus - Evaluating Expressions #3 is probably the most simple of all the functional problems on Hackerrank (it is quite easy to solve it and even more easy to guess the right answer), it references the precious gem of the functional

HackerRank Functional Challenges HR F#: Lambda Calculus - Evaluating Expressions #2 The first λ-calculus evaluating expression problem was very easy. The second one is similar: Compute the value of (λx.x+1)((λy.y+2)3). Just to make a bit more fun from it, let's solve it by writing the code in F#: (fun

HackerRank Functional Challenges HR F#: Lambda Calculus - Evaluating Expressions #1 The next set of problems are about performing calculations with λ-functions. The first one is to check that the reader is confident with mixing λ-calculus and algebraic operators: Compute the value of (λx.x + 1) 3 Let's use β-reduction on this expression: (λx.x

HackerRank Functional Challenges HR F#: Lambda Calculus - Reductions #4 The last one from reduction problems is following: Reduce the following expression, using the beta-rule, to no more than one term. If the expression cannot be reduced, enter "CAN'T REDUCE". (λg.((λf.((λx.(f(xx)))(λx.(f(xx)))))g)) Well, now I

HackerRank Functional Challenges HR F#: Lambda Calculus - Reductions #3 The third λ-calculus problem is a bit more advanced (although still simple): Reduce the following expression, using the beta-rule, to no more than one term. If the expression cannot be reduced, enter "CAN'T REDUCE". ((λx.(x x)) (λx.(x x))) "beta-reduction&

HackerRank Functional Challenges HR F#: Lambda Calculus - Reductions #2 The second λ-calculus problem is following: Reduce the following to no more than one term. If the expression cannot be reduced, enter "CAN'T REDUCE". ((λx.((λy.(x y)) x)) (λz.w)) Let's reduce the expressions: Framing parentheses are not required: (λx.((λy.