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 Twenty-Ninth Edition — November 2015 Mihai Maruseac (ed.) Andreas Abel Chris Allen Christopher Anand Francesco Ariis Heinrich Apfelmus Emil Axelsson Christiaan Baaij Carl Baatz Doug Beardsley Jean-Philippe Bernardy Alexander Berntsen Joachim Breitner Björn Buckwalter Erik de Castro Lopo Lucas DiCioccio Manuel M. T. Chakravarty Roman Cheplyaka Olaf Chitil Alberto Gómez Corona Duncan Coutts Atze Dijkstra Péter Diviánszky Corentin Dupont Richard Eisenberg Tom Ellis Maarten Faddegon Andrew Farmer Dennis Felsing Julian Fleischer Phil Freeman PÁLI Gábor János Michal J. Gajda Andrew Gibiansky Brett G. Giles Andrew Gill Alexander Granin Mark Grebe Daniel Gröber Jurriaan Hage Greg Hale Bastiaan Heeren Joey Hess Nicu Ionita Bob Ippolito Robin KAY Anton Kholomiov Ian-Woo Kim Oleg Kiselyov Edward Kmett Balázs Kőműves Eric Kow Nickolay Kudasov Rob Leslie Ben Lippmeier Andres Löh Rita Loogen Boris Lykah Ian Lynagh José Pedro Magalhães Ketil Malde Douglas McClean Simon Michael Mantas Markevicius Dino Morelli Natalia Muska Rishiyur Nikhil Antonio Nikishaev Ulf Norell Kiwamu Okabe Ivan Perez Jens Petersen Haskell Consultancy Munich Simon Peyton Jones Matthew Pickering Gracjan Polak Bryan Richter Jeffrey Rosenbluth Ian Ross David Sabel Martijn Schrage Carter Tazio Schonwald Tom Schrijvers Michael Schröder Austin Seipp Jeremy Shaw Christian Höner zu Siederdissen Aditya Siram Gideon Sireling Jim Snow Michael Snoyman Kyle Marek-Spartz Lennart Spitzner Doaitse Swierstra Henk-Jan van Tuyl Bernhard Urban Alessio Valentini Adam Vogt Daniel Wagner Greg Weber Ingo Wechsung Kazu Yamamoto Edward Z. Yang Brent Yorgey Alan Zimmerman Marco Zocca Preface This is the 29th edition of the Haskell Communities and Activities Report. Quite a lot of things changed since the previous report. Some old entries have resurfaced and contributors submitted stories in new areas of development but, sadly, several entries have become too stale and had to be removed. All entries from 2013 except the one about cabal have been removed for now but we hope to see them resurface again on the next edition. Please do revive such entries next time if you do have news on them. To make contributing easier, we are experimenting with moving to a rolling-deadline submis- sion where each entry can be submitted at any moment of the year. However, we will still have only 2 editions of HCAR per year, at the usual pace, only the entry submission period will be extended. This change allows us to change the pipeline for building the report (thus, the next report might look completely different). Hence, we are also considering opening the building pipeline to be used by any submitter. As usual, fresh entries – either completely new or old entries which have been revived after a short temporarily disappearance – are formatted using a blue background, while updated entries have a header with a blue background. A few words from Mihai: The previous issue of HCAR was the last in which Alejandro helped in editing. Due to other obligations he has decided to step down. I want to thank him for the effort so far and for the contributions to the Haskell world. A call for new HCAR entries and updates to existing ones will be issued on the Haskell mailing lists in late March/early April. Now enjoy the current report and see what other Haskellers have been up to lately. Any feedback is very welcome, as always. Mihai Maruseac, University of Massachusetts Boston, US [email protected] 2 Contents 1 Community 7 1.1 Haskellers................................................. 7 2 Books, Articles, Tutorials 8 2.1 Oleg’s Mini Tutorials and Assorted Small Projects........................... 8 2.2 School of Haskell............................................. 8 2.3 Haskell Programming from first principles, a book forall....................... 9 2.4 Learning Haskell.............................................. 9 2.5 Agda Tutorial............................................... 10 3 Implementations 11 3.1 The Glasgow Haskell Compiler...................................... 11 3.2 Ajhc Haskell Compiler.......................................... 12 3.3 The Helium Compiler........................................... 13 3.4 UHC, Utrecht Haskell Compiler..................................... 14 3.5 Frege.................................................... 14 3.6 Specific Platforms............................................. 14 3.6.1 Haskell on FreeBSD............................................ 14 3.6.2 Debian Haskell Group.......................................... 15 3.6.3 Fedora Haskell SIG............................................ 15 4 Related Languages and Language Design 16 4.1 Agda.................................................... 16 4.2 MiniAgda................................................. 16 4.3 Disciple................................................... 16 5 Haskell and . 18 5.1 Haskell and Parallelism.......................................... 18 5.1.1 Eden.................................................... 18 5.1.2 Wakarusa................................................. 19 5.2 Haskell and the Web........................................... 19 5.2.1 WAI.................................................... 19 5.2.2 Yesod.................................................... 20 5.2.3 Scotty................................................... 20 5.2.4 Warp.................................................... 21 5.2.5 Mighttpd2 — Yet another Web Server................................. 21 5.2.6 Happstack................................................. 21 5.2.7 Snap Framework............................................. 21 5.2.8 MFlow................................................... 21 5.2.9 Sunroof................................................... 22 5.2.10 Blank Canvas............................................... 23 5.2.11 PureScript................................................. 24 5.3 Haskell and Compiler Writing...................................... 24 5.3.1 MateVM.................................................. 24 5.3.2 UUAG................................................... 24 6 Development Tools 26 6.1 Environments............................................... 26 6.1.1 Haskell IDE From FP Complete..................................... 26 6.1.2 ghc-mod — Happy Haskell Programming................................ 26 6.1.3 haskell-ide-engine, a project for unifying IDE functionality...................... 26 6.1.4 HaRe — The Haskell Refactorer..................................... 27 3 6.1.5 ghc-exactprint............................................... 28 6.1.6 IHaskell: Haskell for Interactive Computing.............................. 28 6.1.7 Haskell for Mac.............................................. 29 6.1.8 Haskino.................................................. 30 6.2 Code Management............................................ 30 6.2.1 Darcs.................................................... 30 6.2.2 cab — A Maintenance Command of Haskell Cabal Packages..................... 31 6.3 Interfacing to other Languages...................................... 31 6.3.1 java-bridge................................................. 31 6.3.2 fficxx.................................................... 31 6.4 Deployment................................................ 32 6.4.1 Cabal and Hackage............................................ 32 6.4.2 Stackage: the Library Dependency Solution.............................. 32 6.4.3 Haskell Cloud............................................... 33 6.5 Others................................................... 33 6.5.1 ghc-heap-view............................................... 33 6.5.2 Hat — the Haskell Tracer........................................ 33 6.5.3 Tasty.................................................... 34 6.5.4 Automatic type inference from JSON.................................. 34 6.5.5 Exference................................................. 35 6.5.6 Lentil.................................................... 35 6.5.7 The Remote Monad Design Pattern................................... 35 6.5.8 Hoed – The Lightweight Algorithmic Debugger for Haskell...................... 36 7 Libraries, Applications, Projects 38 7.1 Language Features............................................ 38 7.1.1 Conduit.................................................. 38 7.1.2 GHC type-checker plugin for kind Nat................................. 38 7.1.3 Dependent Haskell............................................ 39 7.1.4 Yampa................................................... 39 7.2 Education................................................. 41 7.2.1 Holmes, Plagiarism Detection for Haskell................................ 41 7.2.2 Interactive Domain Reasoners...................................... 41 7.3 Parsing and Transforming........................................ 42 7.3.1 HERMIT.................................................. 42 7.3.2 Utrecht Parser Combinator Library: uu-parsinglib........................... 42 7.3.3 Generalized Algebraic Dynamic Programming............................. 43 7.4 Mathematics, Numerical Packages and High Performance Computing................ 44 7.4.1 Rlang-QQ................................................. 44 7.4.2 arb-fft................................................... 45 7.4.3 hblas.................................................... 45 7.4.4 HROOT.................................................. 45 7.4.5 Numerical................................................. 46 7.4.6 petsc-hs.................................................
Recommended publications
  • Thanos Tsouanas --- C.V
    Curriculum Vitæ Thanos Tsouanas 02/05/2017 I Personal details hello photo full name: Athanasios (Thanos) Tsouanas date of birth: 22/02/1983 place of birth: Athens, Greece nationality: Hellenic office address: IMD, Universidade Federal do Rio Grande do Norte Av. Cap. Mor Gouveia, S/N CEP: 59063-400, Natal{RN, Brasil phone number: (+55) (84) 9 8106-9789 (mobile, Telegram, WhatsApp) email address: [email protected] personal website: http://www.tsouanas.org/ GitHub: http://github.com/tsouanas Spoken languages Greek (native); English (proficient); Brazilian Portuguese (fluent). I Studies & academic positions 2016 { Associate professor (permanent position) in Instituto Metr´opole Digital of Universidade Federal do Rio Grande do Norte (UFRN), Brazil. 2015 Postdoctoral researcher in the Mathematics Department of Universidade Federal do Rio Grande do Norte (UFRN), Brazil. 2014 PhD from Ecole´ Normale Superieure´ de Lyon, under the supervision of Olivier Laurent, in the field of theoretical computer science. I was employed by CNRS under the Marie Curie fellowship \MALOA", and had a 1-month secondment split between the University of Oxford (in the team of Luke Ong) and Ecole´ Polytechnique (in the team of Dale Miller). Thesis title: On the Semantics of Disjunctive Logic Programs1 2010 Master of Science degree from MPLA (graduate program in Logic, Algorithms and Computation of the University of Athens and of the Technical University of Athens),2 mathematical logic specialty, grade 8.23/10. 2007 Bachelor's degree from the Department of Mathematics of the University of Athens, specialty of pure mathematics, grade \excellent" (8.51/10). Seminars and schools • Logoi school on Linear Logic and Geometry of Interaction.
    [Show full text]
  • What I Wish I Knew When Learning Haskell
    What I Wish I Knew When Learning Haskell Stephen Diehl 2 Version This is the fifth major draft of this document since 2009. All versions of this text are freely available onmywebsite: 1. HTML Version ­ http://dev.stephendiehl.com/hask/index.html 2. PDF Version ­ http://dev.stephendiehl.com/hask/tutorial.pdf 3. EPUB Version ­ http://dev.stephendiehl.com/hask/tutorial.epub 4. Kindle Version ­ http://dev.stephendiehl.com/hask/tutorial.mobi Pull requests are always accepted for fixes and additional content. The only way this document will stayupto date and accurate through the kindness of readers like you and community patches and pull requests on Github. https://github.com/sdiehl/wiwinwlh Publish Date: March 3, 2020 Git Commit: 77482103ff953a8f189a050c4271919846a56612 Author This text is authored by Stephen Diehl. 1. Web: www.stephendiehl.com 2. Twitter: https://twitter.com/smdiehl 3. Github: https://github.com/sdiehl Special thanks to Erik Aker for copyediting assistance. Copyright © 2009­2020 Stephen Diehl This code included in the text is dedicated to the public domain. You can copy, modify, distribute and perform thecode, even for commercial purposes, all without asking permission. You may distribute this text in its full form freely, but may not reauthor or sublicense this work. Any reproductions of major portions of the text must include attribution. The software is provided ”as is”, without warranty of any kind, express or implied, including But not limitedtothe warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authorsor copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, Arising from, out of or in connection with the software or the use or other dealings in the software.
    [Show full text]
  • Kabbalah, Magic & the Great Work of Self Transformation
    KABBALAH, MAGIC AHD THE GREAT WORK Of SELf-TRAHSfORMATIOH A COMPL€T€ COURS€ LYAM THOMAS CHRISTOPHER Llewellyn Publications Woodbury, Minnesota Contents Acknowledgments Vl1 one Though Only a Few Will Rise 1 two The First Steps 15 three The Secret Lineage 35 four Neophyte 57 five That Darkly Splendid World 89 SIX The Mind Born of Matter 129 seven The Liquid Intelligence 175 eight Fuel for the Fire 227 ntne The Portal 267 ten The Work of the Adept 315 Appendix A: The Consecration ofthe Adeptus Wand 331 Appendix B: Suggested Forms ofExercise 345 Endnotes 353 Works Cited 359 Index 363 Acknowledgments The first challenge to appear before the new student of magic is the overwhehning amount of published material from which he must prepare a road map of self-initiation. Without guidance, this is usually impossible. Therefore, lowe my biggest thanks to Peter and Laura Yorke of Ra Horakhty Temple, who provided my first exposure to self-initiation techniques in the Golden Dawn. Their years of expe­ rience with the Golden Dawn material yielded a structure of carefully selected ex­ ercises, which their students still use today to bring about a gradual transformation. WIthout such well-prescribed use of the Golden Dawn's techniques, it would have been difficult to make progress in its grade system. The basic structure of the course in this book is built on a foundation of the Golden Dawn's elemental grade system as my teachers passed it on. In particular, it develops further their choice to use the color correspondences of the Four Worlds, a piece of the original Golden Dawn system that very few occultists have recognized as an ini­ tiatory tool.
    [Show full text]
  • Prioritizing Pull Requests
    Prioritizing pull requests Version of June 17, 2015 Erik van der Veen Prioritizing pull requests THESIS submitted in partial fulfillment of the requirements for the degree of MASTER OF SCIENCE in COMPUTER SCIENCE by Erik van der Veen born in Voorburg, the Netherlands Software Engineering Research Group Q42 Department of Software Technology Waldorpstraat 17F Faculty EEMCS, Delft University of Technology 2521 CA Delft, the Netherlands The Hague, the Netherlands www.ewi.tudelft.nl www.q42.com c 2014 Erik van der Veen. Cover picture: Finding the pull request that needs the most attention. Prioritizing pull requests Author: Erik van der Veen Student id: 1509381 Email: [email protected] Abstract Previous work showed that in the pull-based development model integrators face challenges with regard to prioritizing work in the face of multiple concurrent pull requests. We identified the manual prioritization heuristics applied by integrators and ex- tracted features from these heuristics. The features are used to train a machine learning model, which is capable of predicting a pull request’s importance. The importance is then used to create a prioritized order of the pull requests. Our main contribution is the design and initial implementation of a prototype service, called PRioritizer, which automatically prioritizes pull requests. The service works like a priority inbox for pull requests, recommending the top pull requests the project owner should focus on. It keeps the pull request list up-to-date when pull requests are merged or closed. In addition, the service provides functionality that GitHub is currently lacking. We implemented pairwise pull request conflict detection and several new filter and sorting options e.g.
    [Show full text]
  • Warp: a Haskell Web Server
    The Functional Web Warp: A Haskell Web Server Michael Snoyman • Suite Solutions oughly two years ago, I began work on about this runtime is its lightweight threads. As the Yesod Web framework. I originally a result of this feature, Warp simply spawns a R intended FastCGI for my deployment strat- new thread for each incoming connection, bliss- egy, but I also created a simple HTTP server for fully unaware of the gymnastics the runtime is local testing, creatively named SimpleServer. performing under the surface. Because Yesod targets the Web Application Part of this abstraction involves converting Interface (WAI), a standard interface between synchronous Haskell I/O calls into asynchro- Haskell Web servers and Web applications, it nous system calls. Once again, Warp reaps the was easy to switch back ends for testing and benefits by calling simple functions like recv production. and send, while GHC does the hard work. It didn’t take long before I started getting Up through GHC 6.12, this runtime sys- feature requests for SimpleServer: slowly but tem was based on the select system call. This surely, features such as chunked transfer encod- worked well enough for many tasks but didn’t ing and sendfile-based file serving made their scale for Web servers. One big feature of the way in. The tipping point was when Matt Brown GHC 7 release was a new event manager, written of Soft Mechanics made some minor tweaks by Google’s Johan Tibell and Serpentine’s Bryan to SimpleServer and found that it was already O’Sullivan. This new runtime uses different sys- the fastest Web server in Haskell (see Figure 1).
    [Show full text]
  • Computer Scientist Last Updated: August 23, 2021
    Based in Fortaleza, Brazil H (e-mail me for phone number) Rudy Matela B [email protected] rudymatela Computer Scientist Last updated: August 23, 2021 Personal Information Full name Rudy Matela Braquehais Nationalities Brazilian & Polish Year of Birth 1987 Summary I am a Computer Scientist with over 10 years of experience in both software industry and academia. In industry, I worked developing web applications, mobile applications, networking systems and embedded systems. In academia, I worked on the topic of property-based testing of functional (Haskell) programs and published a few research papers. Education 2014–2017 PhD in Computer Science, University of York, United Kingdom. 2009–2011 Master of Computer Science, Universidade Estadual do Ceará, Brazil. 2005–2009 Bachelor of Computer Science, Universidade Estadual do Ceará, Brazil. Skills and approximate years of experience Programming Haskell (8 years),C (>10 years), Bash (>10 years), Ruby (3 years), C#, JavaScript, Lisp, Java, Assembly, C++, Python Markup/Other LATEX (>10 years), HTML (>10 years), CSS, make, Makefile (>10 years), SQL, Markdown, LilyPond Libs./Frmwrks. Yesod, Ruby on Rails, Android SDK, Windows Driver Kit, SDL OS Linux System Administration (Ubuntu, Debian, Arch): dpkg, apt, pacman SCM Git (>10 years), Mercurial (>10 years), SVN (3 years) Fields of Functional Programming Languages, Property-based Testing, Data Structures, Interest Programming, Algorithm Design, Computer Networking Languages Portuguese Native Language French Basic English Fluent Spanish Basic Polish Basic Rudy Matela — [email protected] 1/3 Previous Roles and Experience Software Industry 2018–now Computer Scientist, Self-employed, Brazil. Independent contractor providing software development services. { Technologies: Haskell, Yesod, Snap, SQL, JavaScript and Bash { formerly with Stack Builders (USA) from 2018 to 2020.
    [Show full text]
  • Chapter 2 - the Transpersonal Nature of the Physical Body
    1 Chapter 2 - The Transpersonal Nature of the Physical Body INTRODUCTION A glimpse of the transpersonal nature of the physical body Mr. Wright‟s experience also provides us a The incredible case of Mr. Wright. In 1956, a healthy glimpse of the true transpersonal nature of the physical and vibrantly active individual named Mr. Wright body. The “transpersonal” nature of the physical body developed lymphosarcoma, cancer of the lymph nodes. refers to its transformative capacity to extend and expand His condition had deteriorated to such an extent that the biological processes beyond their usual physiological tumors in his neck, groin, chest, and abdomen had grown parameters to encompass nonphysical aspects of life, to the size of oranges; his chest had to be emptied of one mind and consciousness, and even transcend the to two liters of milky fluid every other day. Doctors did limitations of time and space under certain circumstances. not believe that he had much longer to live. Mr. Wright, It refers to the physical body‟s potential to direct and use however, has heard about an upcoming clinical test of a its energy to richly form from itself, from its biological new experimental drug, called Krebiozen, and pleaded components and inner experience, with a sense of with them to include him in the study. Even though Mr. meaning and purpose, a broad range of possibilities for Wright was past the point of saving, the doctors gave in to human transformative capacity and extraordinary his persistent requests and entered him into the clinical functioning. To start, let us consider twelve varieties of trials of what was later to prove to be a worthless drug.
    [Show full text]
  • A Web-Based Editor for Cloud-Based Programming
    A Web-Based Editor for Cloud-Based Programming Jan Bracker Master’s Thesis submitted in March 2014 Christian-Albrechts-Universität zu Kiel Institut für Informatik Arbeitsgruppe für Programmiersprachen und Übersetzerkonstruktion Advised by: Prof. Dr. Michael Hanus Eidesstattliche Erklärung Hiermit erkläre ich an Eides statt, dass ich die vorliegende Arbeit selbststän- dig verfasst und keine anderen als die angegebenen Quellen und Hilfsmittel verwendet habe. Kiel, ii Abstract Today’s programmers and development tools still use concepts and work- flows that were introduced with the early operating systems. Programs are still structured in files and to reuse code a developer still has to search and integrate appropriate libraries all by herself. One way to solve these problems is to structure source code using the semantic concepts a language offers and store them in a database to allow structured access and a more advanced search and support for reuse. These ideas lead to the concept of a code cloud. Last year a group of students at the Christian-Albrechts- University developed such a code cloud; they called it Claude. It supports simple Haskell code, up- and download of Haskell packages, and offers search functionality for the code. Though there are Haskell specific features the general structure of Claude is language independent and is supposed to fit as many languages as possible. This thesis extends Claude with a web-based editor to develop new packages in the code cloud and release them. The editor by design is also kept language independent, but offers integration of language specific features. iii Contents 1 Introduction1 2 Foundations and Technologies5 2.1 JavaScript...............................5 2.1.1 JavaScript Object Notation................6 2.1.2 Language Description...................6 2.1.3 Utility Libraries.......................8 2.1.4 CodeMirror: Editor Component............
    [Show full text]
  • Download Slides
    Yesod Web Framework Michael Snoyman QCon San Francisco 2011 What is Yesod ● Web framework ● Written in Haskell ○ Strongly typed ○ Pure/side-effect free ○ Fast ● Collection of libraries ● Full stack ○ Web server ○ Templating ○ ORM ○ Add-on libraries: everything from auth to gravatar means foundation in Hebrew (יסוד) Yesod ● Brief history ● Started ~2.5 years ago by yours truly ● Went back to full-time web development ● Unhappy with existing options ○ Fan of static typing ○ Not a fan of Java ● Had used Haskell to save the day on a few projects at my previous job ● Decided to double-down on it ● Used it for a few contract jobs, great results Used in the Real World® ● Through Suite Solutions: ○ Production Yesod site at Emerson (Social Knowledge Base) ○ Warp webserver powering Dell's context-sensitive help ○ Various Yesod libraries used at Cisco and LifeTech ● Three companies (that I know of) pushing Yesod- powered solutions to clients ● Suite Solutions sponsoring Yesod development ● Very active, friendly community, lots of them making sites too Why Yesod? ● Evolutionary, not revolutionary ○ Follow standard practices (e.g., MVC) ○ Offer experimental options (e.g., MongoDB) ● Use compiler to avoid bugs ○ Type system fixes the "boundary issue" ○ Avoid things like XSS automatically ● Make it fast ○ High performance libraries under the surface ○ Simple, high-level API ● Encourage modularity (widgets, subsites, middleware) Correctness Type-safe URLs ● Datatype for all URLs in application ● All valid URLs can be expressed as a value ● Synchronized
    [Show full text]
  • Annual Report 2001-2002
    Global Community Global Justice TIDES FOUNDATION Annual Report 2001/2002 TIDES FOUNDATION Tides Foundation actively promotes change toward a healthy society—one founded on principles of social justice, equal economic Our Vision ] opportunity, a robust democratic process and environmental sustainability. We believe healthy societies rely fundamentally upon respect for human rights, the vitality of communities and a celebration of diversity. Tides Foundation partners with donors to increase and organize resources for social change. Our Mission ] We facilitate effective grantmaking programs, create opportunities for learning, and build community among donors and grantees. As a public charity, we strengthen community-based nonprofit organizations and the progressive movement by providing an innovative and cost-effective Our Method ] framework for your philanthropy. We bring together people, resources and vision through Tides donor advised funds, Tides Initiatives, funding collaboratives, gatherings and learning opportunities, family foundation and institutional management services, comprehensive and customized program services and more. cover and back photos: Sebastião Salgado/Amazonas Images Table of Contents Letter from the Executive Director 2 Global Community, Global Justice: 2001 International Highlights 3 Tides Foundation Partner Highlight: Urgent Action Fund for Women’s Human Rights 6 Tides Foundation Initiatives: Building a Progressive Philanthropic Community 8 International Giving with Tides Foundation 10 Values. Vision. Strategy: Tides Philanthropic Services 12 Board of Directors 14 Staff 15 Information for Grantseekers 17 2001 Grants List 17 2001 Financial Statements 28 [ Global Community, Global Sustainability, Global Justice “In this year’s annual The world did seem to change during the past 12 months. report, we are going to Most generations believe that their particular era is a time of great change and import.
    [Show full text]
  • Lweb: Information Flow Security for Multi-Tier Web Applications
    LWeb: Information Flow Security for Multi-tier Web Applications JAMES PARKER, University of Maryland, USA NIKI VAZOU∗, IMDEA Software Institute, Spain MICHAEL HICKS, University of Maryland, USA This paper presents LWeb, a framework for enforcing label-based, information flow policies in database-using web applications. In a nutshell, LWeb marries the LIO Haskell IFC enforcement library with the Yesod web programming framework. The implementation has two parts. First, we extract the core of LIO into a monad transformer (LMonad) and then apply it to Yesod’s core monad. Second, we extend Yesod’s table definition DSL and query functionality to permit defining and enforcing label-based policies on tables and enforcing them during query processing. LWeb’s policy language is expressive, permitting dynamic per-table and per-row 75 policies. We formalize the essence of LWeb in the λLWeb calculus and mechanize the proof of noninterference in Liquid Haskell. This mechanization constitutes the first metatheoretic proof carried out in Liquid Haskell. We also used LWeb to build a substantial web site hosting the Build it, Break it, Fix it security-oriented programming contest. The site involves 40 data tables and sophisticated policies. Compared to manually checking security policies, LWeb imposes a modest runtime overhead of between 2% to 21%. It reduces the trusted code base from the whole application to just 1% of the application code, and 21% of the code overall (when counting LWeb too). CCS Concepts: • Software and its engineering → Semantics; • Security and privacy → Logic and verification; Web application security; Additional Key Words and Phrases: security, information flow control, metatheory, Liquid Haskell, Haskell ACM Reference Format: James Parker, Niki Vazou, and Michael Hicks.
    [Show full text]
  • Web-Based Data Analytics in Haskell
    Web-based Data Analytics in Haskell Drew Haven, Eric Stratmann fdrew.haven, [email protected] Abstract of Legends is a competitive Real Time Strategy games where teams of five play against each other. The site Many people are interested in statistics, but providing an allows users to view player information and analyze var- easy to use Website to analyze statistics can be difficult. ious gameplay statistics. Users can look at their own data We wanted to make it simple to create Websites to an- to learn about their behavior in the game or look at more alyze arbitrary data. Our project explored data analyt- general data to see trends in gameplay. Besides creating ics using the Haskell Web framework, Yesod, using it to the site itself, we also wrote software to parse and upload write a proof-of-concept site that analyzes information League of Legends data. from the popular on-line game League of Legends. The Our aim in creating this application was to deter- Website allows users to lookup a variety of statistics and mine what sort of database interface would help us write perform queries on the data while presenting the results this Website, as well as to evaluate Haskell’s viability in a graphical format. for Web application development. We chose to use the Yesod framework, which seemed to be the most mature 1 Introduction Haskell Web framework. For our backend, we used the MongoDB[3] database, and wrote code to automatically Analyzing statistics can be rewarding and insightful, but generate MongoDB queries based on columns defined on without an easy way to analyze new datasets doing so can our dataset.
    [Show full text]