I have finally released HPDF 1.1 with some typesetting features. More details are in this post. It is very experimental but working. I am not happy at all with the API of HPDF but I have no choice. I need, for another project, to add features as fast as possible. I'll think about the elegance of the API later even if I need to change lots of things in HPDF (not really a good development methodology I agree). In addition to the typesetting features, I corrected lots of problems, optimized the code and changed a little bit the image API.

 

The text operators of the release 1.0 of my Haskell PDF library are very low level. You have access to most of the PDF text operators but it means you can just specify where to put a line of text. So, it is difficult to do more than displaying some labels on a chart. The styles are also very limited : you can use bold and italic if it is supported by the standard PDF fonts.

For the 1.1 release of my library, I have decided to improve this and write something cool.

First, I have implemented the TeX line breaking algorithm with glues and penalties. Contrary to the real TeX algorithm, there is no looseness parameter and the hyphenation algorithm is not implemented (will be for another release).

 

Here it is ! I finally released a version 1.0 of my Haskell PDF library. It is a totally new implementation and a totally new version. But, it is not done yet. There are several other features I'd like to introduce in future versions and some things I'd like to improve. But, I had to release something. I could not wait forever.

Here is a summary of the features with some criticisms. The package is containing a demo in the Test folder.

Note before reading : I released a 1.1 version with additional features described in another post.

 

This is the third part of my serie about Haskell and category theory. In the previous post, I described a bit the Hask category and some categorical constructs. The goal of this text is to understand the meaning of a recursive type like List. For that, we will have to understand what is a free algebra and have a quick look at the relationship with monads (for applications look at the blog of sigfpe). But first, I would like to highlight a problem with the category Hask.

 

In my previous post, I explained that with category theory you can define some concepts in such a way that they can be used in several different contexts. As a side effect, the definitions are rather abstract since they are forbidden from talking about the implementation of the objects and must rely only on the provided interfaces.

So, a first thing to do when studying category theory is learning some of these definitions. Some of them are just generalizations of ideas commonly used in set theory. I introduced a few of them in my previous post but I used a terminology that is not standard.

So, before continuing and introducing some additional definitions, let me complete my previous post and give the standard terminology that I will now use.