Haskell Communities and Activities Report

Total Page:16

File Type:pdf, Size:1020Kb

Haskell Communities and Activities Report Haskell Communities and Activities Report http://tinyurl.com/haskcar Twentieth Edition — May 2011 Janis Voigtländer (ed.) Andreas Abel Iain Alexander Krasimir Angelov Heinrich Apfelmus Dmitry Astapov Christiaan Baaij Justin Bailey Alexander Bau Doug Beardsley Jean-Philippe Bernardy Annette Bieniusa Mario Blažević Anthonin Bonnefoy Gwern Branwen Joachim Breitner Matt Brown Björn Buckwalter Bryan Buecking Joel Burget Douglas Burke Carlos Camarão Erik de Castro Lopo Roman Cheplyaka Olaf Chitil Duncan Coutts Nils Anders Danielsson Dominique Devriese Daniel Díaz Atze Dijkstra Péter Diviánszky Facundo Dominguez Marc Fontaine Patai Gergely Jürgen Giesl Brett G. Giles Andy Gill George Giorgidze Dmitry Golubovsky Marco Gontijo Matthew Gruen Torsten Grust Jurriaan Hage Sönke Hahn Malte Harder Bastiaan Heeren Judah Jacobson PÁLI Gábor János Jeroen Janssen Csaba Hruska Oleg Kiselyov Michal Konečný Eric Kow Ben Lippmeier Andres Löh Hans-Wolfgang Loidl Tom Lokhorst Rita Loogen Ian Lynagh John MacFarlane Christian Maeder José Pedro Magalhães Ketil Malde Alex McLean Vivian McPhail Simon Michael Arie Middelkoop Neil Mitchell Dino Morelli JP Moresmau Matthew Naylor Victor Nazarov Jürgen Nicklisch-Franken Rishiyur Nikhil Thomas van Noort Johan Nordlander Miguel Pagano David M. Peixotto Jens Petersen Simon Peyton Jones Dan Popa Bernie Pope Antonio M. Quispe Alberto Ruiz David Sabel Antti Salonen Ingo Sander Uwe Schmidt Martijn Schrage Tom Schrijvers Jeremy Shaw Axel Simon Jan Šnajder Michael Snoyman Will Sonnex Andy Stewart Martin Sulzmann Doaitse Swierstra Henning Thielemann Simon Thompson Sergei Trofimovich Thomas Tuegel Marcos Viera Janis Voigtländer David Waern Greg Weber Gregory D. Weber Kazu Yamamoto Brent Yorgey Preface This is the 20th edition of the Haskell Communities and Activities Report. As usual, fresh entries are formatted using a blue background, while updated entries have a header with a blue background. Entries for which I received a liveness ping, but which have seen no essential update for a while, have been replaced with online pointers to previous versions. Other entries on which no new activity has been reported for a year or longer have been dropped completely. Please do revive such entries next time if you do have news on them. A call for new entries and updates to existing ones will be issued on the usual mailing lists in October. Now enjoy the current report and see what other Haskellers have been up to lately. Any feedback is very welcome. Janis Voigtländer, University of Bonn, Germany, [email protected] 2 Contents 1 Community, Articles/Tutorials7 1.1 Haskellers.................................................. 7 1.2 Haskell Wikibook.............................................. 7 1.3 The Monad.Reader............................................. 7 1.4 Oleg’s Mini Tutorials and Assorted Small Projects........................... 7 1.5 Haskell Cheat Sheet............................................ 8 1.6 A Tutorial on the Enumerator Library.................................. 8 1.7 Practice of Functional Programming................................... 8 2 Implementations 9 2.1 Haskell Platform.............................................. 9 2.2 The Glasgow Haskell Compiler...................................... 9 2.3 Immix Garbage Collector on GHC.................................... 12 2.4 UHC, Utrecht Haskell Compiler...................................... 12 2.5 Exchanging Sources between Clean and Haskell............................. 13 2.6 The Reduceron............................................... 13 2.7 Specific Platforms............................................. 13 2.7.1 Haskell on FreeBSD............................................ 13 2.7.2 Debian Haskell Group........................................... 14 2.7.3 Haskell in Gentoo Linux.......................................... 14 2.7.4 Fedora Haskell SIG............................................. 15 2.8 Fibon Benchmark Tools & Suite..................................... 15 3 Related Languages 17 3.1 Agda..................................................... 17 3.2 MiniAgda.................................................. 17 3.3 Clean.................................................... 17 3.4 Timber................................................... 18 3.5 Disciple................................................... 18 4 Haskell and . 20 4.1 Haskell and Parallelism.......................................... 20 4.1.1 TwilightSTM................................................ 20 4.1.2 Haskell-MPI................................................. 20 4.1.3 Eden..................................................... 20 4.1.4 GpH — Glasgow Parallel Haskell..................................... 21 4.1.5 Parallel GHC Project........................................... 22 4.2 Haskell and the Web............................................ 23 4.2.1 GHCJS: Haskell to Javascript compiler.................................. 23 4.2.2 WAI..................................................... 23 4.2.3 Warp.................................................... 24 4.2.4 Holumbus Search Engine Framework................................... 24 4.2.5 gitit..................................................... 25 4.2.6 Happstack.................................................. 25 4.2.7 Mighttpd2 — Yet another Web Server.................................. 26 4.2.8 Yesod.................................................... 26 4.2.9 Snap Framework.............................................. 27 4.2.10 rss2irc.................................................... 27 4.3 Haskell and Games............................................. 28 4.3.1 FunGEn................................................... 28 4.3.2 Nikki and the Robots........................................... 28 4.3.3 Freekick2.................................................. 29 3 4.4 Haskell and Compiler Writing....................................... 29 4.4.1 UUAG.................................................... 29 4.4.2 AspectAG.................................................. 29 4.4.3 Berp..................................................... 30 4.4.4 LQPL — A Quantum Programming Language Compiler and Emulator................ 30 5 Development Tools 32 5.1 Environments................................................ 32 5.1.1 EclipseFP.................................................. 32 5.1.2 ghc-mod — Happy Haskell Programming on Emacs.......................... 32 5.1.3 Leksah — The Haskell IDE in Haskell.................................. 32 5.1.4 HEAT: The Haskell Educational Advancement Tool.......................... 33 5.1.5 HaRe — The Haskell Refactorer..................................... 33 5.2 Documentation............................................... 34 5.2.1 Haddock................................................... 34 5.2.2 Hoogle.................................................... 34 5.2.3 lhs2TEX................................................... 35 5.3 Testing and Analysis............................................ 35 5.3.1 shelltestrunner............................................... 35 5.3.2 HLint.................................................... 35 5.3.3 hp2any................................................... 35 5.4 Optimization................................................ 36 5.4.1 HFusion................................................... 36 5.4.2 Optimizing Generic Functions....................................... 36 5.5 Boilerplate Removal............................................ 37 5.5.1 A Generic Deriving Mechanism for Haskell............................... 37 5.5.2 Derive.................................................... 37 5.6 Code Management............................................. 37 5.6.1 Darcs.................................................... 37 5.6.2 ipatch.................................................... 38 5.6.3 DarcsWatch................................................. 38 5.6.4 darcsden................................................... 38 5.6.5 darcsum................................................... 38 5.6.6 Improvements to Cabal’s Test Support.................................. 39 5.6.7 cab — A Maintenance Command of Haskell Cabal Packages...................... 39 5.6.8 Hackage-Debian.............................................. 39 5.7 Interfacing to other Languages...................................... 39 5.7.1 HSFFIG................................................... 39 5.8 Deployment................................................. 39 5.8.1 Cabal and Hackage............................................. 39 5.8.2 Hackage 2.0................................................. 40 5.8.3 Capri.................................................... 41 5.8.4 Shaker.................................................... 41 6 Libraries 42 6.1 Processing Haskell............................................. 42 6.1.1 The Neon Library............................................. 42 6.1.2 mueval.................................................... 42 6.2 Parsing and Transforming......................................... 42 6.2.1 The grammar-combinators Parser Library................................ 42 6.2.2 language-python.............................................. 42 6.2.3 Loker.................................................... 42 6.2.4 epub-metadata............................................... 43 6.2.5 ChristmasTree............................................... 43 6.2.6 First Class Syntax Macros......................................... 43 6.2.7 Utrecht Parser Combinator Library: uu-parsinglib..........................
Recommended publications
  • Assignment of Master's Thesis
    ASSIGNMENT OF MASTER’S THESIS Title: Git-based Wiki System Student: Bc. Jaroslav Šmolík Supervisor: Ing. Jakub Jirůtka Study Programme: Informatics Study Branch: Web and Software Engineering Department: Department of Software Engineering Validity: Until the end of summer semester 2018/19 Instructions The goal of this thesis is to create a wiki system suitable for community (software) projects, focused on technically oriented users. The system must meet the following requirements: • All data is stored in a Git repository. • System provides access control. • System supports AsciiDoc and Markdown, it is extensible for other markup languages. • Full-featured user access via Git and CLI is provided. • System includes a web interface for wiki browsing and management. Its editor works with raw markup and offers syntax highlighting, live preview and interactive UI for selected elements (e.g. image insertion). Proceed in the following manner: 1. Compare and analyse the most popular F/OSS wiki systems with regard to the given criteria. 2. Design the system, perform usability testing. 3. Implement the system in JavaScript. Source code must be reasonably documented and covered with automatic tests. 4. Create a user manual and deployment instructions. References Will be provided by the supervisor. Ing. Michal Valenta, Ph.D. doc. RNDr. Ing. Marcel Jiřina, Ph.D. Head of Department Dean Prague January 3, 2018 Czech Technical University in Prague Faculty of Information Technology Department of Software Engineering Master’s thesis Git-based Wiki System Bc. Jaroslav Šmolík Supervisor: Ing. Jakub Jirůtka 10th May 2018 Acknowledgements I would like to thank my supervisor Ing. Jakub Jirutka for his everlasting interest in the thesis, his punctual constructive feedback and for guiding me, when I found myself in the need for the words of wisdom and experience.
    [Show full text]
  • Decentralized Social Data Sharing
    Decentralized Social Data Sharing by Alan Davoust A Thesis submitted to the Faculty of Graduate Studies and Post-Doctoral Affairs in partial fulfilment of the requirements for the degree of Doctor of Philosophy in Electrical and Computer Engineering Ottawa-Carleton Institute for Electrical and Computer Engineering (OCIECE) Department of Systems and Computer Engineering Carleton University Ottawa, Ontario, Canada 2015 Copyright c 2015 - Alan Davoust Abstract Many data sharing systems are open to arbitrary users on the Internet, who are independent and self-interested agents. Therefore, in addition to traditional design goals such as technical performance, data sharing systems should be designed to best support the strategic interactions of these agents. Our research hypothesis is that designs that maximize the participants’ autonomy can produce useful data sharing systems. We apply this design principle to both the system architecture and the functional design of a data sharing system, and study the resulting class of systems, which we call Decentralized Social Data Sharing ((DS)2) systems. We formally define this class of systems and provide a reference implementation and an example application: a distributed wiki system called P2Pedia. P2Pedia implements a decentralized collaboration model, where the users are not required to reach a consensus, and instead benefit from being exposed to multiple viewpoints. We demonstrate the value of this collaboration model through an extensive user study. Allowing the users to autonomously control their data prevents the system archi- tecture from being optimized for efficient query processing. We show that Regular Path Queries, a useful class of graph queries, can still be processed on the shared data: although in the worst case such queries are intractable, we propose a cost estimation technique to identify tractable queries from partial knowledge of the data.
    [Show full text]
  • State of the Platform Haskell Implementors Workshop - 2012 Stats
    Mark Lentczner, Google State of the Platform Haskell Implementors Workshop - 2012 Stats Number of packages — 47 (21 ghc + 26 hp) Lines of Code — 302k (167k ghc + 135k hp) Releases — 9 (May 2009 ~ present) Distributions — 11+ (Mac, Windows, Linuxes) Stats — June ~ August 2012 Downloads — 20,957 (228/day) 68% Windows 21% Mac OS X 8% Source ?? Linux Mentions of "platform" on #haskell — 983 People Build Maintainers Committee Joachim Breitner — Debian Duncan Coutts Mikhail Glushenkov — Windows Iavor Diatchki Mark Lentczner — OS X Isaac Dupree Andres Löh — NixOS Thomas Schilling Gabor Pali — FreeBSD Johan Tibell Jens Petersen — Fedora Adam Wick Release Team And the many contributors on Mark Lentczner — Chief Meanie haskell-platform@ Duncan Coutts libraries@ Don Stewart Content Packages — Haskell Platform 2012.2.0.0 ghc 7.4.1 time 1.4 random 1.0.1.1 array 0.4.0.0 unix 2.5.1.0 regex-base 0.93.2 base 4.5.0.0 Win32 2.2.2.0 regex-compat 0.95.1 bytestring 0.9.2.1 regex-posix 0.95.1 Cabal 1.14.0 stm 2.3 containers 0.4.2.1 syb 0.3.6.1 deepseq 1.3.0.0 cgi 3001.1.7.4 text 0.11.2.0 directory 1.1.0.2 fgl 5.4.2.4 transformers 0.3.0.0 extensible-exceptions GLUT 2.1.2.1 xhtml 3000.2.1 0.1.1.4 haskell-src 1.0.1.5 zlib 0.5.3.3 filepath 1.3.0.0 html 1.0.1.2 haskell2010 1.1.0.1 HTTP 4000.2.3 haskell98 2.0.0.1 HUnit 1.2.4.2 hpc 0.5.1.1 mtl 2.1.1 cabal-install 0.14.0 old-locale 1.0.0.4 network 2.3.0.13 alex 3.0.1 old-time 1.1.0.0 OpenGL 2.2.3.1 happy 1.18.9 pretty 1.1.1.0 parallel 3.2.0.2 process 1.1.0.1 parsec 3.1.2 template-haskell 2.7.0.0 QuickCheck 2.4.2 Standard
    [Show full text]
  • Notes on Functional Programming with Haskell
    Notes on Functional Programming with Haskell H. Conrad Cunningham [email protected] Multiparadigm Software Architecture Group Department of Computer and Information Science University of Mississippi 201 Weir Hall University, Mississippi 38677 USA Fall Semester 2014 Copyright c 1994, 1995, 1997, 2003, 2007, 2010, 2014 by H. Conrad Cunningham Permission to copy and use this document for educational or research purposes of a non-commercial nature is hereby granted provided that this copyright notice is retained on all copies. All other rights are reserved by the author. H. Conrad Cunningham, D.Sc. Professor and Chair Department of Computer and Information Science University of Mississippi 201 Weir Hall University, Mississippi 38677 USA [email protected] PREFACE TO 1995 EDITION I wrote this set of lecture notes for use in the course Functional Programming (CSCI 555) that I teach in the Department of Computer and Information Science at the Uni- versity of Mississippi. The course is open to advanced undergraduates and beginning graduate students. The first version of these notes were written as a part of my preparation for the fall semester 1993 offering of the course. This version reflects some restructuring and revision done for the fall 1994 offering of the course|or after completion of the class. For these classes, I used the following resources: Textbook { Richard Bird and Philip Wadler. Introduction to Functional Program- ming, Prentice Hall International, 1988 [2]. These notes more or less cover the material from chapters 1 through 6 plus selected material from chapters 7 through 9. Software { Gofer interpreter version 2.30 (2.28 in 1993) written by Mark P.
    [Show full text]
  • Graphical User Interfaces in Haskell
    Graphical User Interfaces in Haskell By Gideon Sireling August 2011 Abstract Graphical user interfaces (GUIs) are critical to user friendliness, and are well supported by imperative, particularly object-oriented, programming languages. This report focuses on the development of GUIs with the purely functional language Haskell. We review prior efforts at supporting such interfaces with functional idioms, and investigate why these are rarely used in practice. We argue that there is no overarching solution, but rather, that each class of graphical application should be supported by a domain-specific abstraction. Finally, we present such an abstraction for data-processing applications; a framework for binding data to graphical interfaces. The framework does not attempt to replace existing graphical toolkits; rather, it adds a new layer of abstraction, with interfaces provided to Gtk2Hs and WxHaskell. Simple examples demonstrate how Haskell can be utilised to accomplish this task as easily as any imperative language. 1 Acknowledgement I would like to thank my supervisor, Mr Andy Symons, for the clear direction which he provided throughout this project. I would also like to thank the good folks who so freely donate their time and expertise to the Haskell Platform, EclipseFP, and all the community projects utilised in this work. Finally, I wish to express my deepest gratitude to my family, who tolerated all the time invested in this project with the utmost grace and patience. 2 Table of Contents Abstract ..............................................................................................................................................
    [Show full text]
  • Gérez Votre Documentation Projet Comme Du Code
    Gérez votre documentation projet comme du code Raphaël Semeteys - Consultant chez AtoS Publié dans GLMF n°158 – Mars 2013 https://connect.ed-diamond.com/GNU-Linux-Magazine/GLMF-158/Gerez-votre-documentation-projet-comme-du-code La documentation d'un projet,qu'il soit libre ou non, est encore souvent vue aujourd'hui comme la dernière roue du carrosse : on la gère si on a le temps et en vrai si on en a vraiment envie. Ben oui, on est développeurs et on ne cherche pas forcément à se faire publier chez O'Reilly. Bref on aime écrire, ça oui, mais surtout du code ! Sur mes différents projets, et notamment ceux qui sont libres1 j'ai toujours cherché LE format pivot qui idéalement me permettrait de gérer et de générer mes documents. Naturellement j'ai A adopté L TEX, amoureux du parfait rendu qu'il génère en PDF. Mais bon... il faut quand même être un peu réaliste, ce ne sont pas ni ma copine, ni ma mère, ni mon grand-père qui vont contribuer à la documentation de mon projet dans ces conditions ! Quelles n'ont donc pas étés ma surprise et ma joie lorsque j'ai découvert ce que je vais vous exposer ici : un format pivot lisible par tous et des outils libres pour le manipuler. Ta-dam ! Je vous présente geekettes et geeks... Markdown, Pandoc et Gitit ! Le tuple qui a fait émerger pour moi le concept code <-> edoc. Pour cela, un grand merci à mon collègue Romain Vimont qui m'a fait une démonstration qui m'a très vite séduit.
    [Show full text]
  • Haskell Und Debian
    Haskell und Debian Joachim Breitner ∗ Karlsruher Institut für Technology [email protected] Abstract gleiche Weise direkt installiert werden: Ein einfaches apt-get install ghc Da die Programmiersprache Haskell immer beliebter wird genügt, und der Haskell-Compiler ist installiert. apt-get upgrade und in immer weiteren Kreisen eingesetzt wird, müssen sich Aktualisierungen laufen problemlos mit apt-get remove nun immer mehr Programmierer auch um die Besonderheiten und nicht benötigte Pakete können mit sau- der Installation von Haskell-Compilern und -Bibliotheken ber und vollständig entfernt werden. Wenn ein zu installie- kümmern. Dies zu vereinfachen und vereinheitlichen ist die rendes Paket ein anderes benötigt, wird dieses automatisch originäre Aufgabe von Distributionen wie Debian. Dieser mit installiert und auch im weiteren Betrieb werden diese Vortrag gibt einen Einblick in die Funktionsweise von Debian, Abhängigkeiten stets geprüft. Kryptographie schützt den An- insbesondere in Bezug auf Haskell-Pakete, erklärt was man wender dabei vor bösartig veränderten Paketen. als Anwender von Debian erwarten kann und was sich Darüber hinaus prüfen die Debian-Entwickler dass die Debian von den Haskell-Bibliotheken wünscht. Programme auch wirklich Freie Software sind. Man kann sich also darauf verlassen, dass man zu jedem Paket in Debian die Categories and Subject Descriptors K.6.3 [Management of Quellen bekommt, diese verändern darf und die Veränderun- Computing and Information Systems]: Software Management— gen auch weitergeben darf. Auch das geht mit einheitlichen Software process Befehlen (apt-get source und dpkg-buildpackage). Keywords linux distribution, package management, Debian Ich erinnere mich noch vage an die Zeit als ich unter Windows Software noch auf irgendwelchen Webseiten direkt heruntergeladen habe und mich durch immer verschiedene 1.
    [Show full text]
  • Haskell Communities and Activities Report
    Haskell Communities and Activities Report http://tinyurl.com/haskcar Twenty-Second Edition — May 2012 Janis Voigtländer (ed.) Andreas Abel Iain Alexander Heinrich Apfelmus Emil Axelsson Christiaan Baaij Doug Beardsley Jean-Philippe Bernardy Mario Blažević Gwern Branwen Joachim Breitner Björn Buckwalter Douglas Burke Carlos Camarão Erik de Castro Lopo Roman Cheplyaka Olaf Chitil Duncan Coutts Jason Dagit Nils Anders Danielsson Romain Demeyer James Deng Dominique Devriese Daniel Díaz Atze Dijkstra Facundo Dominguez Adam Drake Andy Georges Patai Gergely Jürgen Giesl Brett G. Giles Andy Gill George Giorgidze Torsten Grust Jurriaan Hage Bastiaan Heeren PÁLI Gábor János Guillaume Hoffmann Csaba Hruska Oleg Kiselyov Michal Konečný Eric Kow Ben Lippmeier Andres Löh Hans-Wolfgang Loidl Rita Loogen Ian Lynagh Christian Maeder José Pedro Magalhães Ketil Malde Antonio Mamani Alp Mestanogullari Simon Michael Arie Middelkoop Dino Morelli JP Moresmau Ben Moseley Takayuki Muranushi Jürgen Nicklisch-Franken Rishiyur Nikhil David M. Peixotto Jens Petersen Simon Peyton Jones Dan Popa David Sabel Uwe Schmidt Martijn Schrage Tom Schrijvers Andrew G. Seniuk Jeremy Shaw Christian Höner zu Siederdissen Michael Snoyman Jan Stolarek Martin Sulzmann Doaitse Swierstra Henning Thielemann Simon Thompson Sergei Trofimovich Marcos Viera Janis Voigtländer David Waern Daniel Wagner Greg Weber Kazu Yamamoto Edward Z. Yang Brent Yorgey Preface This is the 22nd edition of the Haskell Communities and Activities Report. As usual, fresh entries are formatted using a blue background, while updated entries have a header with a blue background. Entries for which I received a liveness ping, but which have seen no essential update for a while, have been replaced with online pointers to previous versions.
    [Show full text]
  • Preview Haskell Tutorial (PDF Version)
    Haskell Programming About the Tutorial Haskell is a widely used purely functional language. Functional programming is based on mathematical functions. Besides Haskell, some of the other popular languages that follow Functional Programming paradigm include: Lisp, Python, Erlang, Racket, F#, Clojure, etc. Haskell is more intelligent than other popular programming languages such as Java, C, C++, PHP, etc. In this tutorial, we will discuss the fundamental concepts and functionalities of Haskell using relevant examples for easy understanding. Audience This tutorial has been prepared for beginners to let them understand the basic concepts of functional programming using Haskell as a programming language. Prerequisites Although it is a beginners’ tutorial, we assume that the readers have a reasonable exposure to any programming environment and knowledge of basic concepts such as variables, commands, syntax, etc. Copyright & Disclaimer © Copyright 2017 by Tutorials Point (I) Pvt. Ltd. All the content and graphics published in this e-book are the property of Tutorials Point (I) Pvt. Ltd. The user of this e-book is prohibited to reuse, retain, copy, distribute or republish any contents or a part of contents of this e-book in any manner without written consent of the publisher. We strive to update the contents of our website and tutorials as timely and as precisely as possible, however, the contents may contain inaccuracies or errors. Tutorials Point (I) Pvt. Ltd. provides no guarantee regarding the accuracy, timeliness or completeness of our website or its contents including this tutorial. If you discover any errors on our website or in this tutorial, please notify us at [email protected] i Haskell Programming Table of Contents About the Tutorial ......................................................................................................................................
    [Show full text]
  • TU Kaiserslautern Functional Programming
    Prof. Dr. Ralf Hinze TU Kaiserslautern M.Sc. Sebastian Schweizer Fachbereich Informatik AG Programmiersprachen Functional Programming: Exercise 1 Sheet published: Wednesday, April 17th Submission deadline: Tuesday, April 23rd, 12:00 noon Registration deadline: Thursday, April 18th, 12:00 noon Submission Instructions After you have registered for the exercise (see task 1), you will get access to your team's Git repository on our GitLab server. Please do the submission for tasks 3 and 4 into that repository by Tuesday, April 23rd, 12:00 noon. 1 Register for Exercises In order to take this course you need to register for the exercises. Please form teams of 3{4 students each. Send an email including your name, contact email address, matrikulation number, as well as the names of your teammates (names only) to Sebastian Schweizer ([email protected]). The registration deadline is Thursday, April 18th, 12:00 noon. If you cannot find colleagues for a team then we will arrange something during the first exercise session. We will register an account for you on our GitLab server and create a repository for your team. You have to submit your exercise solutions for this and the following sheets into that repository. We will provide the following exercise sheets directly into your repository. Furthermore, you will get read access to an additional repository containing the lecture slides. 2 Tool Setup In this course, we use the standard lazy functional programming language Haskell. In order to solve the exercises, you need a Haskell compiler. Furthermore, you need Git to submit your solutions into your team's repository and to obtain the lecture material.
    [Show full text]
  • Awesome Selfhosted - Wikis
    Awesome Selfhosted - Wikis Wikis Related: Software Development - Documentation Generators See also: Wikimatrix, Wiki Engines - WikiIndex, List of wiki software - Wikipedia, Comparison of wiki software - Wikipedia. BookStack - BookStack is a simple, self-hosted, easy-to-use platform for organizing and storing information. It allows for documentation to be stored in a book like fashion. (Demo, Source Code) MIT PHP Cowyo - Cowyo is a feature-rich wiki for minimalists. (Demo) MIT Go django-wiki - Wiki system with complex functionality for simple integration and a superb interface. Store your knowledge with style: Use django models. (Demo) GPL-3.0 Python Documize - Modern Docs + Wiki software with built-in workflow, single binary executable, just bring MySQL/Percona. (Source Code) AGPL-3.0 Go Dokuwiki - Easy to use, lightweight, standards-compliant wiki engine with a simple syntax allowing reading the data outside the wiki. All data is stored in plain files, therefore no database is required. (Source Code) GPL-2.0 PHP Gitit - Wiki program that stores pages and uploaded files in a git repository, which can then be modified using the VCS command line tools or the wiki's web interface. GPL-2.0 Haskell Gollum - Simple, Git-powered wiki with a sweet API and local frontend. MIT Ruby jingo - Git based wiki engine written for node.js, with a decent design, a search capability and good typography. MIT Nodejs Mediawiki - MediaWiki is a free and open-source wiki software package written in PHP. It serves as the platform for Wikipedia and the other Wikimedia projects, used by hundreds of millions of people each month.
    [Show full text]
  • Why Learn Haskell?
    Why learn Haskell? Keegan McAllister SIPB Cluedump October 11, 2011 Keegan McAllister Why learn Haskell? Composability The central challenge of programming (Dijkstra, 2000): How not to make a mess of it It helps to build programs from composable parts Combine in flexible yet well-defined ways Haskell is a language uniquely suited to this goal Keegan McAllister Why learn Haskell? Functions factorial 0=1 factorial n= n * factorial (n-1) Whitespace for function application f x not f(x) Parentheses only for grouping Keegan McAllister Why learn Haskell? Lists A list is either the empty list [], or a first element x and a remaining list xs, written (x:xs) Use these patterns to build and to inspect lists length []=0 length (x:xs)= 1 + length xs Keegan McAllister Why learn Haskell? Declarative programming Describe results, not individual steps -- merge two sorted lists merge xs []= xs merge [] ys= ys merge (x:xs) (y:ys) |x<y= x : merge xs (y:ys) | otherwise= y : merge (x:xs) ys Keegan McAllister Why learn Haskell? Equational reasoning Functions on functions map f []=[] map f (x:xs)= f x : map f xs (f . g) x= f (g x) Reason by substituting equals for equals map f (map g xs) ≡ map (f . g) xs map f . map g ≡ map (f . g) Keegan McAllister Why learn Haskell? Lazy evaluation Expressions aren't evaluated until result is needed -- two infinite lists evens= 0 : map (+1) odds odds= map (+1) evens GHCi> take 16 evens [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30] Keegan McAllister Why learn Haskell? Laziness separates concerns: example 1 minimum= head .
    [Show full text]