Projektet har resulterat i en programvaruprodukten Fudgets (Functional Widgets), som är ett bibliotek som kan användas för programmering av grafiska gränssnitt på hög nivå i det funktionella språket Haskell. Som en spin-off har Fudgets även stöd för utveckling av klient/betjänt-baserad Internetprogramvara.
Still, to make it really useful to the community and for our own related projects, resources must be spent in developing a complete set of interface elements, and documenting the system with a tutorial, user's manual and a hypertext reference manual. Thus, we plan to dedicate a full time programmer during three years on developing the toolkit in this direction. We do not want to spend too much PhD-student time into this, since the work does not necessarily lead to a thesis.Anslaget till projektet var ju bara 50 procent jämfört med ansökan - men fudgetbiblioteket har ändå utvecklats med ett antal nya gränssnittselement, en hypertextmanual och ett antal exempelapplikationer. Dessutom har programmeringsmetodiken visat sig vara generellt användbar för problem som inbegriper parallellism. Fudgetbiblioteket har också stöd för utveckling av klient/betjänt-baserad programvara - något som använts för utveckling av grupp-planeringsverktyg för internt bruk på vår institution.
The design of the Fudget Library started with the desire to find a good abstraction of GUI building blocks, i.e., an abstraction that makes use of the powerful abstraction mechanisms found in functional languages (higher order functions, polymorphism, etc.) and thereby, hopefully, is better than the abstractions you find in typical GUI toolkits for conventional, imperative languages.
The main abstraction used in the Fudget Library is the fudget. Fudgets are processes which can, via type safe message passing, communicate with other concurrently running fudgets and with the outside world. Fudgets are still ordinary values that can be arguments to functions, etc. A fudget may have an internal state, which is not visible in the type of the fudget. Fudget programming in this respect resembles object oriented programming, where state information is distributed and hidden within objects rather than centralized and exposed to arbitrary use or misuse. This also makes fudgets easy to compose, like functions in functional languages.