-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.xml
80 lines (66 loc) · 6.03 KB
/
index.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Blog on fp-tower blog</title>
<link>https://blog.fp-tower.com/</link>
<description>Recent content in Blog on fp-tower blog</description>
<generator>Hugo -- gohugo.io</generator>
<language>en</language>
<lastBuildDate>Thu, 21 Jan 2021 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fp-tower.com/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Monocle 3 Roadmap</title>
<link>https://blog.fp-tower.com/2021-01-21-monocle-3-roadmap/</link>
<pubDate>Thu, 21 Jan 2021 00:00:00 +0000</pubDate>
<guid>https://blog.fp-tower.com/2021-01-21-monocle-3-roadmap/</guid>
<description>Monocle is quite an old Scala library. It was initially conceived in 2014 as a port of the Haskell Lens library. Over the years, we've adapted the optics encoding to better accommodate the JVM runtime and the unique blend of OOP and FP present in Scala. In turn, key aspects of Monocle’s design have been adapted for other programming languages such as Kotlin and Java.
Although Monocle is widely used in the Scala ecosystem, its API is complicated and quite verbose.</description>
</item>
<item>
<title>Comparison of recording setup - Part 1</title>
<link>https://blog.fp-tower.com/2021-01-04-comparison-recording-setup-part-1/</link>
<pubDate>Mon, 04 Jan 2021 00:00:00 +0000</pubDate>
<guid>https://blog.fp-tower.com/2021-01-04-comparison-recording-setup-part-1/</guid>
<description>In February 2019, I started my biggest side project: a training course on Functional Programing in Scala. I’ve spent an estimated 2,000 hours on this venture and it is still not finished!
I have learned a lot from this project, but I have also made many mistakes along the way. So, I have decided to write a series of blog posts as a way of sharing my experience, and so that others can learn from my journey.</description>
</item>
<item>
<title>Foundations of Functional Programming in Scala is available</title>
<link>https://blog.fp-tower.com/2020-10-20-foundations-of-functional-programming/</link>
<pubDate>Tue, 20 Oct 2020 00:00:00 +0000</pubDate>
<guid>https://blog.fp-tower.com/2020-10-20-foundations-of-functional-programming/</guid>
<description>After nearly two years of hard work, I am excited to announce Foundations of Functional Programming in Scala, is now available on Early Access!
Foundation is a self-paced online course that focuses on the practical side of functional programming. You will learn to write programs that are both robust and easy to maintain as we cover the foundational knowledge required to make you a confident, productive, and skilled functional Scala developer.</description>
</item>
<item>
<title>Optics size</title>
<link>https://blog.fp-tower.com/2020-04-25-optics-size/</link>
<pubDate>Tue, 07 Apr 2020 00:00:00 +0000</pubDate>
<guid>https://blog.fp-tower.com/2020-04-25-optics-size/</guid>
<description>In my previous post, I discussed how to change Optional such as we can get useful error messages. The best solution encoded the error type in an extra covariant type parameter, similar to how ZIO error works. Today, I would like to present how this simple change will have a profound impact on the optics hierarchy, making it simpler and more expressive at the same time!
Optics hierarchy In the current version of Monocle, we support the following optics:</description>
</item>
<item>
<title>Introducing error reporting in optics</title>
<link>https://blog.fp-tower.com/2020-01-27-introducing-error-reporting-in-optics/</link>
<pubDate>Mon, 27 Jan 2020 00:00:00 +0000</pubDate>
<guid>https://blog.fp-tower.com/2020-01-27-introducing-error-reporting-in-optics/</guid>
<description>A frequently requested feature is the ability to report why an optic failed. It is particularly crucial when you build a sophisticated optic. Say you have a large configuration document, and you want to focus on kafka.topics.order-events.partitions. There may not be a partitions key, or if it exists, it may have an unexpected format, e.g. it is a String instead of an Int. In Monocle and other optics libraries, we currently cannot provide any details about the failure.</description>
</item>
<item>
<title>Monocle 3.x</title>
<link>https://blog.fp-tower.com/2020-01-06-monocle-3/</link>
<pubDate>Mon, 06 Jan 2020 00:00:00 +0000</pubDate>
<guid>https://blog.fp-tower.com/2020-01-06-monocle-3/</guid>
<description>We recently started the development of the next major version of Monocle, Monocle 3.x. In this post, I would like to explain our objectives and discuss some of the changes we intend to make.
Monocle 3.x will be a complete rewrite. It doesn't mean we will change everything, but we will question every aspect of the library: optics encoding, API, names, dependencies, etc. We defined the following objectives to help us make trade-offs in the new design:</description>
</item>
<item>
<title>State of Monocle</title>
<link>https://blog.fp-tower.com/2019-12-30-state-of-monocle/</link>
<pubDate>Mon, 30 Dec 2019 00:00:00 +0000</pubDate>
<guid>https://blog.fp-tower.com/2019-12-30-state-of-monocle/</guid>
<description>Monocle, like many other Scala functional libraries, was inspired by Haskell. In our case, it is the Lens library by Edward Kmett and al.
In Monocle, we experimented with various optics encoding: pair of functions, Van Laarhoven, and profunctor (see LensImpl). The JVM and Haskell runtime are hugely different, and an encoding that works well in Haskell can be inefficient in Scala. For example, Haskell relies on zero cost wrapper (newtype) to effectively select typeclass instances, but we don't have an equivalent in Scala/JVM yet (opaque types may help).</description>
</item>
</channel>
</rss>