skip to main content
10.1145/1017472.1017483acmconferencesArticle/Chapter ViewAbstractPublication PagesicfpConference Proceedingsconference-collections
Article

wxHaskell: a portable and concise GUI library for haskell

Published: 22 September 2004 Publication History

Abstract

wxHaskell is a graphical user interface (GUI) library for Haskell that is built on wxWidgets: a free industrial strength GUI library for C++ that has been ported to all major platforms, including Windows, Gtk, and MacOS X. In contrast with many other libraries, wxWidgets retains the native look-and-feel of each particular platform. We show how distinctive features of Haskell, like parametric polymorphism, higher-order functions, and first-class computations, can be used to present a concise and elegant monadic interface for portable GUI programs.

References

[1]
P. Achten and S. Peyton Jones. Porting the Clean object I/O library to Haskell. In Proceedings of the 12th International Workshop on Implementation of Functional Languages (2000), pages 194--213, 2000.]]
[2]
P. Achten and M. Plasmeijer. The beauty and the beast. Technical Report 93--03, Research Inst. for Declarative Systems, Dept. of Informatics, University of Nijmegen, Mar. 1993.]]
[3]
P. Achten and M. J. Plasmeijer. The ins and outs of Clean I/O. Journal of Functional Programming, 5(1):81--110, 1995.]]
[4]
P. Achten, J. van Groningen, and M. Plasmeijer. High level specification of I/O in functional languages. In J. Launchbury and P. Sansom, editors, Workshop Notes in Computer Science, pages 1--17. Springer-Verlag, 1993. Glasgow Workshop on Functional Programming, Ayr, Scotland, 6-8 June 1992.]]
[5]
K. A. Angelov. The HToolkit project. http://htoolkit.sourceforge.net.]]
[6]
A. Baars, A. Löh, and D. Swierstra. Parsing permutation phrases. In R. Hinze, editor, Proceedings of the 2001 ACM SIGPLAN Haskell Workshop, pages 171--182. Elsevier, 2001.]]
[7]
E. Barendsen and S. Smetsers. Uniqueness Type Inference. In M. Hermenegildo and S. Swierstra, editors, 7th International Symposium on Programming Language Implementation and Logic Programming (PLILP'95), Utrecht, The Netherlands, volume 982 of LNCS, pages 189--206. Springer-Verlag, 1995.]]
[8]
D. Beazley. SWIG: An easy to use tool for integrating scripting languages with C and C++ . In 4th annual Tcl/Tk workshop, Monterey, CA, July 1996.]]
[9]
M. Carlsson and T. Hallgren. Fudgets -- a graphical user interface in a lazy functional language. In Functional Programming and Computer Architectures (FPCA), pages 321--330. ACM press, June 1993.]]
[10]
M. Carlsson and T. Hallgren. Fudgets -- Purely Functional Processes with applications to Graphical User Interfaces. PhD thesis, Department of Computing Science, Chalmers University of Technology and Gothenburg University, 1998.]]
[11]
M. Chakravarty, S. Finne, F. Henderson, M. Kowalczyk, D. Leijen, S. Marlow, E. Meijer, S. Panne, S. Peyton-Jones, A. Reid, M. Wallace, and M. Weber. The Haskell 98 foreign function interface 1.0: an addendum to the Haskell 98 report. http://www.cse.unsw.edu.au/~chak/haskell/ffi, Dec. 2003.]]
[12]
K. Claessen. The Yahu library. http://www.cs.chalmers.se/Cs/Grundutb/Kurser/afp/yahu.html.]]
[13]
K. Claessen, T. Vullinghs, and E. Meijer. Structuring graphical paradigms in TkGofer. In 2nd International Conference on Functional programming (ICFP), pages 251--262, 1997. Also appeared in ACM SIGPLAN Notices 32, 8, (Aug. 1997).]]
[14]
A. Courtney and C. Elliott. Genuinely functional user interfaces. In ACM Sigplan 2001 Haskell Workshop, Sept. 2001.]]
[15]
A. Courtney, H. Nilsson, and J. Peterson. The Yampa arcade. In Proceedings of the ACM SIGPLAN workshop on Haskell, pages 7--18. ACM Press, 2003.]]
[16]
C. Elliott and P. Hudak. Functional reactive animation. In The proceedings of the 1997 ACM Sigplan International Conference on Functional Programming (ICFP97 ), pages 263--273. ACM press, 1997.]]
[17]
L. Erkök and J. Launchbury. Recursive monadic bindings. In Proceedings of the Fifth ACM SIGPLAN International Conference on Functional Programming, ICFP'00, pages 174--185. ACM Press, Sept. 2000.]]
[18]
S. Finne, D. Leijen, E. Meijer, and S. Peyton Jones. H/Direct: A Binary Foreign Language Interface to Haskell. In The International Conference on Functional Programming (ICFP), Baltimore, USA, 1998. Also appeared in ACM SIGPLAN Notices 34, 1, (Jan. 1999).]]
[19]
S. Finne, D. Leijen, E. Meijer, and S. Peyton Jones. Calling hell from heaven and heaven from hell. In The International Conference on Functional Programming (ICFP), Paris, France, 1999. Also appeared in ACM SIGPLAN Notices 34, 9, (Sep. 1999).]]
[20]
S. Finne and S. Peyton Jones. Composing Haggis. In Proceedings of the Fifth Eurographics Workshop on Programming Paradigms in Computer Graphics, 1995.]]
[21]
J. Garrigue. The LablGtk library. http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/lablgtk.html.]]
[22]
J. Hughes. Generalising monads to arrows. In Science of Computer Programming, volume 37, pages 67--111, May 2000.]]
[23]
E. Karlsen, G. Russell, A. Lüdtke, and C. Lüth. The HTk library. http://www.informatik.uni-bremen.de/htk.]]
[24]
K. Läufer. Type classes with existential types. Journal of Functional Programming, 6(3):485--517, May 1996.]]
[25]
D. Leijen. The wxHaskell library. http://wxhaskell.sourceforge.net.]]
[26]
D. Leijen. The λ Abroad -- A Functional Approach to Software Components. PhD thesis, Department of Computer Science, Universiteit Utrecht, The Netherlands, 2003.]]
[27]
D. Leijen and E. Meijer. Domain specific embedded compilers. In Second USENIX Conference on Domain Specific Languages (DSL'99), pages 109--122, Austin, Texas, Oct. 1999. USENIX Association. Also appeared in ACM SIGPLAN Notices 35, 1, (Jan. 2000).]]
[28]
D. Leijen and E. Meijer. Parsec: Direct style monadic parser combinators for the real world. Technical Report UU-CS-2001-27, Department of Computer Science, Universiteit Utrecht, 2001.]]
[29]
R. Noble and C. Runciman. Gadgets: Lazy Functional Components for Graphical User Interfaces. In M. Hermenegildo and S. D. Swierstra, editors, PLILP'95: Seventh International Symposium on Programming Languages, Implementations, Logics and Programs, volume 982 of Lecture Notes in Computer Science, pages 321--340. Springer-Verlag, Sept. 1995.]]
[30]
A. T. H. Pang. Binding Haskell to object-oriented component systems via reflection. Master's thesis, The University of New South Wales, School of Computer Science and Engineering, June 2003. http://www.algorithm.com.au/files/reflection/reflection.pdf.]]
[31]
A. T. H. Pang and M. M. T. Chakravarty. Interfacing Haskell with object-oriented languages. In G. Michaelson and P. Trinder, editors, 15th International Workshop on the Implementation of Functional Languages (IFL'03), LNCS. Springer-Verlag, 2004.]]
[32]
R. Paterson. A new notation for arrows. In International Conference on Functional Programming, pages 229--240. ACM Press, Sept. 2001.]]
[33]
A. Reid and S. Singh. Implementing fudgets with standard widget sets. In Glasgow Functional Programming workshop, pages 222--235. Springer-Verlag, 1993.]]
[34]
J. H. Reppy. Higher Order Concurrency. PhD thesis, Cornell University, 1992.]]
[35]
B. Robinson. wxFruit: A practical GUI toolkit for functional reactive programming. http://zoo.cs.yale.edu/classes/cs490/03-04b/bartholomew.robinson.]]
[36]
G. Russell. Events in Haskell, and how to implement them. In Proceedings of the sixth ACM SIGPLAN international conference on Functional programming, pages 157--168, 2001.]]
[37]
M. Sage. The FranTk library. http://www.haskell.org/FranTk.]]
[38]
M. Sage. FranTk -- a declarative GUI language for Haskell. In Proceedings of the fifth ACM SIGPLAN International Conference on Functional Programming (ICFP'00), pages 106--117. ACM Press, 2000.]]
[39]
U. Sander et al. The wxEiffel library. http://wxeiffel.sourceforge.net.]]
[40]
E. Scholz. Imperative streams - a monadic combinator library for synchronous programming. In Proceedings of the third ACM SIGPLAN international conference on Functional programming, pages 261--272. ACM Press, 1998.]]
[41]
M. Schrage. Proxima: a generic presentation oriented XML editor. PhD thesis, Department of Computer Science, Universiteit Utrecht, The Netherlands, 2004.]]
[42]
A. Simons and M. Chakravarty. The Gtk2Hs library. http://gtk2hs.sourceforge.net.]]
[43]
J. Smart, R. Roebling, V. Zeitlin, R. Dunn, et al. The wxWidgets library. http://www.wxwidgets.org.]]
[44]
T. Vullinghs, D. Tuinman, and W. Schulte. Lightweight GUIs for functional programming. In Proceedings of the 7th International Symposium on Programming Languages: Implementations, Logics and Programs, pages 341--356. Springer-Verlag, 1995.]]
[45]
P. Wadler. Linear types can change the world! In M. Broy and C. Jones, editors, IFIP TC 2 Working Conference on Programming Concepts and Methods, pages 347--359. North Holland, 1990.]]
[46]
Z. Wan, W. Taha, and P. Hudak. Real-time FRP. In Proceedings of the sixth ACM SIGPLAN international conference on Functional programming, pages 146--156. ACM Press, 2001.]]

Cited By

View all
  • (2022)A-IDE: A Non-intrusive Cross-Platform Development Environment for AVR Programming in AssemblySoftware Engineering, Artificial Intelligence, Networking and Parallel/Distributed Computing10.1007/978-3-031-19604-1_1(1-12)Online publication date: 19-Nov-2022
  • (2018)Ghosts of departed proofs (functional pearl)ACM SIGPLAN Notices10.1145/3299711.324275553:7(119-131)Online publication date: 17-Sep-2018
  • (2018)Ghosts of departed proofs (functional pearl)Proceedings of the 11th ACM SIGPLAN International Symposium on Haskell10.1145/3242744.3242755(119-131)Online publication date: 17-Sep-2018
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
Haskell '04: Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
September 2004
122 pages
ISBN:1581138504
DOI:10.1145/1017472
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 22 September 2004

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. C++
  2. Haskell
  3. combinator library
  4. graphical user interface
  5. layout
  6. wxWidgets

Qualifiers

  • Article

Conference

HW04
Sponsor:
HW04: Haskell Workshop 2004
September 22, 2004
Utah, Snowbird, USA

Acceptance Rates

Overall Acceptance Rate 57 of 143 submissions, 40%

Upcoming Conference

ICFP '25
ACM SIGPLAN International Conference on Functional Programming
October 12 - 18, 2025
Singapore , Singapore

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)4
  • Downloads (Last 6 weeks)0
Reflects downloads up to 20 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2022)A-IDE: A Non-intrusive Cross-Platform Development Environment for AVR Programming in AssemblySoftware Engineering, Artificial Intelligence, Networking and Parallel/Distributed Computing10.1007/978-3-031-19604-1_1(1-12)Online publication date: 19-Nov-2022
  • (2018)Ghosts of departed proofs (functional pearl)ACM SIGPLAN Notices10.1145/3299711.324275553:7(119-131)Online publication date: 17-Sep-2018
  • (2018)Ghosts of departed proofs (functional pearl)Proceedings of the 11th ACM SIGPLAN International Symposium on Haskell10.1145/3242744.3242755(119-131)Online publication date: 17-Sep-2018
  • (2017)Interactive programming in Agda – Objects and graphical user interfacesJournal of Functional Programming10.1017/S095679681600031927Online publication date: 6-Feb-2017
  • (2016)Towards the Layout of ThingsProceedings of the 28th Symposium on the Implementation and Application of Functional Programming Languages10.1145/3064899.3064905(1-13)Online publication date: 31-Aug-2016
  • (2015)Towards a catalog of usability smellsProceedings of the 30th Annual ACM Symposium on Applied Computing10.1145/2695664.2695670(175-181)Online publication date: 13-Apr-2015
  • (2014)Task Oriented Programming with Purely Compositional Interactive Scalable Vector GraphicsProceedings of the 26nd 2014 International Symposium on Implementation and Application of Functional Languages10.1145/2746325.2746329(1-13)Online publication date: 1-Oct-2014
  • (2014)Typelets – A Rule-Based Evaluation Model for Dynamic, Statically Typed User InterfacesProceedings of the 16th International Symposium on Practical Aspects of Declarative Languages - Volume 832410.1007/978-3-319-04132-2_13(184-199)Online publication date: 20-Jan-2014
  • (2013)Building JavaScript Applications with HaskellImplementation and Application of Functional Languages10.1007/978-3-642-41582-1_3(37-52)Online publication date: 16-Nov-2013
  • (2011)iTask as a New Paradigm for Building GUI ApplicationsImplementation and Application of Functional Languages10.1007/978-3-642-24276-2_10(153-168)Online publication date: 2011
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media