COMP4801
Final Year Project

FYP24006

A Comprehensive
Pure-Haskell
Native Desktop
Reflex-based
Functional Reactive Programming
GUI Framework
+ Example Application

Lai Yat Kit
Project Member

Dr. Bruno Oliveira
Project Supervisor

Reports

Interim Report

(Due: Jan 26, 2025)

Final Report

(Due: Apr 21, 2025)

Background

Haskell is one of the most well-known general-purpose purely functional programming languages. Despite being a fairly exotic language, many applications have been developed in Haskell by its very passionate community.

To develop native desktop graphical user interfaces in Haskell, it is often necessary to utilize third-party libraries.

There are several open-source Haskell libraries created for this purpose, each offering different GUI widget toolkits and employing different GUI programming paradigms.

Programmers shall freely pick one that satisfies their needs.

However, if one hopes to gain from the numerous benefits of designing software with functional programming principles, they might prefer to use a Haskell native desktop GUI library equipped with functional reactive programming as its GUI programming paradigm, complete with a widget toolkit built in pure-Haskell, as opposed to using a typical Haskell library that employs an imperative programming paradigm and is built on top of an external widget toolkit, such as GTK or Qt.

Yet currently, such a Haskell library does not exist.

This problem thus motivates the existence of this project. The project aims to develop an implementation for such a library, named RGX, with OpenGL & SDL to render its graphics, and Reflex as its functional reactive programming library.

Once the library is completed, the project will demonstrate its capabilities by building a Syncthing front-end application, named RGXSyncthing.