Fairstream

Backtracking is a versatile approach for solving search problems by building solutions incrementally. If a partial solution cannot be extended, it is discarded and the process returns to a previous step to explore an alternative path. This method is generally more efficient than brute-force searching due to pruning: stopping exploration of a branch as soon as it violates a constraint, which eliminates entire sections of the search space.

Strictly speaking, fair backtracking is not required for all search problems. A fair strategy guarantees all branches make progress, preventing any single branch from starving the others. The List monad handles non-deterministic computation well, and within a finite search space it produces the same results as a fair stream. When the search space is infinite, or when one branch may produce unbounded results, fairness becomes essential to ensure completeness.

[]

ThinkPad E470

Recently I’ve been looking for a Linux-friendly, budget laptop. I like ThinkPads, and all of my laptops have been either T-series or X-series but this time I didn’t want to spend that amount of money and was looking for cheaper alternatives.

Browsing Lenovo website, I realised that a reasonably configured E470 would cost about €1000 which was about how much I was willing to pay. I configured it, so it has:

[]

Types and Programming Languages

February 2016, as a birthday present to myself I bought a copy of Types and Programming Languages. At the time the only thing I did with it was to take a photo of it, sharing it on Twitter and congratulating myself. To be fair, I did try reading it, but it was so intimidating that I gave up very early in the book. One and a half years later I’m going to give it another go because a few things have changed.

[]