A Haskell Hosted Domain Specific Language for Higher-Order
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
The Types, Roles, and Practices of Documentation in Data Analytics Open Source Software Libraries
Computer Supported Cooperative Work (CSCW) https://doi.org/10.1007/s10606-018-9333-1 © The Author(s) 2018 The Types, Roles, and Practices of Documentation in Data Analytics Open Source Software Libraries A Collaborative Ethnography of Documentation Work R. Stuart Geiger1 , Nelle Varoquaux1,2 , Charlotte Mazel-Cabasse1 & Chris Holdgraf1,3 1Berkeley Institute for Data Science, University of California, Berkeley, 190 Doe Library, Berkeley, CA, 94730, USA (E-mail: [email protected]); 2Department of Statistics, Berkeley Institute for Data Science, University of California, Berkeley, Berkeley, CA, USA; 3Berkeley Institute for Data Science, Helen Wills Neuroscience Institute, University of California, Berkeley, Berkeley, CA, USA Abstract. Computational research and data analytics increasingly relies on complex ecosystems of open source software (OSS) “libraries” – curated collections of reusable code that programmers import to perform a specific task. Software documentation for these libraries is crucial in helping programmers/analysts know what libraries are available and how to use them. Yet documentation for open source software libraries is widely considered low-quality. This article is a collaboration between CSCW researchers and contributors to data analytics OSS libraries, based on ethnographic fieldwork and qualitative interviews. We examine several issues around the formats, practices, and challenges around documentation in these largely volunteer-based projects. There are many dif- ferent kinds and formats of documentation that exist around such libraries, which play a variety of educational, promotional, and organizational roles. The work behind documentation is similarly multifaceted, including writing, reviewing, maintaining, and organizing documentation. Different aspects of documentation work require contributors to have different sets of skills and overcome various social and technical barriers. -
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 © 20092020 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. -
Commonspad Ocaml Library Programmer’S Manual
Commonspad OCaml Library Programmer’s manual Yoann Padioleau [email protected] December 29, 2009 Copyright c 2009 Yoann Padioleau. Permission is granted to copy, distribute and/or modify this doc- ument under the terms of the GNU Free Documentation License, Version 1.3. 1 Short Contents 1 Introduction 4 I Common 7 2 Overview 8 3 Basic 14 4 Basic types 31 5 Collection 46 6 Misc 61 II OCommon 66 7 Overview 67 8 Ocollection 68 9 Oset 71 10 Oassoc 73 11 Osequence 74 12 Oarray 75 13 Ograph 77 14 Odb 81 2 III Extra Common 82 15 Interface 84 16 Concurrency 89 17 Distribution 90 18 Graphic 91 19 OpenGL 92 20 GUI 93 21 ParserCombinators 94 22 Backtrace 100 23 Glimpse 101 24 Regexp 103 25 Sexp and binio 104 26 Python 105 Conclusion 106 A Indexes 107 B References 108 3 Contents 1 Introduction 4 1.1 Features . 4 1.2 Copyright . 5 1.3 Source organization . 6 1.4 API organization . 6 1.5 Acknowledgements . 6 I Common 7 2 Overview 8 3 Basic 14 3.1 Pervasive types and operators . 14 3.2 Debugging, logging . 15 3.3 Profiling . 17 3.4 Testing . 18 3.5 Persitence . 20 3.6 Counter . 21 3.7 Stringof . 21 3.8 Macro . 22 3.9 Composition and control . 22 3.10 Concurrency . 24 3.11 Error management . 24 3.12 Environment . 25 3.13 Arguments . 28 3.14 Equality . 29 4 Basic types 31 4.1 Bool . 31 4.2 Char . 31 4.3 Num . -
Not All Patterns, but Enough
Not All Patterns, But Enough Neil Mitchell, Colin Runciman York University Catch An Example • Is the following code safe?* risers :: Ord α→[α] → [[α]] risers [] = [] risers [x] = [[x]] risers (x:y:etc) = if x ≤ y then (x:s) : ss else [x] : (s : ss) where s:ss = risers (y : etc) > risers “Haskell” = [“Has”,“k”,“ell”] * Only people who haven’t seen this example in the paper! Using Catch > catch risers.hs Incomplete pattern on line 6 Program is safe • Catch is the associated implementation • Catch has proven the program is safe • Without any annotations The Pattern-Matching problem • Will a program crash when run? • May call error directly: error “doh!” • May call error indirectly: head [] • Partial pattern match: case False of True → 1 • GHC can warn on partial patterns • Catch conservatively checks a program will not crash at runtime • Even in the presence of partial patterns How Catch works First convert Haskell to first-order Core, using Yhc and Firstify Checker Exact Operates on first-order (ignoring laziness) Core language 3 constraint operators Constraint Language Conservative Describes a (possibly infinite) set of values Can replace constraint language Checker Terms • A constraint describes a set of values • x is a (:)-constructed value • A precondition is a constraint on arguments • In head x, x must be (:)-constructed • An entailment is a constraint on arguments to ensure a constraint on the result • If x is (:)-constructed, null x is False Checker Types • Opaque constraint type • data Constraint = … • Does an expression satisfy -
Haddock User Guide I
Haddock User Guide i Haddock User Guide Haddock User Guide ii Copyright © 2004 Simon Marlow Haddock User Guide iii COLLABORATORS TITLE : Haddock User Guide ACTION NAME DATE SIGNATURE WRITTEN BY Simon Marlow 2004-08-02 REVISION HISTORY NUMBER DATE DESCRIPTION NAME Haddock User Guide iv Contents 1 Introduction 1 1.1 Obtaining Haddock . .1 1.2 License . .2 1.3 Acknowledgements . .2 2 Invoking Haddock 3 2.1 Using literate or pre-processed source . .6 3 Documentation and Markup 7 3.1 Documenting a top-level declaration . .7 3.2 Documenting parts of a declaration . .8 3.2.1 Class methods . .8 3.2.2 Constructors and record fields . .8 3.2.3 Function arguments . .9 3.3 The module description . .9 3.4 Controlling the documentation structure . .9 3.4.1 Re-exporting an entire module . 10 3.4.2 Omitting the export list . 10 3.5 Named chunks of documentation . 11 3.6 Hyperlinking and re-exported entities . 11 3.7 Module Attributes . 12 3.8 Markup . 12 3.8.1 Paragraphs . 12 3.8.2 Special characters . 12 3.8.3 Character references . 13 3.8.4 Code Blocks . 13 3.8.5 Hyperlinked Identifiers . 13 3.8.6 Emphasis and Monospaced text . 13 3.8.7 Linking to modules . 14 3.8.8 Itemized and Enumerated lists . 14 3.8.9 Definition lists . 14 3.8.10 URLs . 14 3.8.11 Anchors . 14 Haddock User Guide v 4 Index 15 Abstract This document describes Haddock version 2.6.1, a Haskell documentation tool. Haddock User Guide 1 / 15 Chapter 1 Introduction This is Haddock, a tool for automatically generating documentation from annotated Haskell source code. -
The Glasgow Haskell Compiler User's Guide, Version 4.08
The Glasgow Haskell Compiler User's Guide, Version 4.08 The GHC Team The Glasgow Haskell Compiler User's Guide, Version 4.08 by The GHC Team Table of Contents The Glasgow Haskell Compiler License ........................................................................................... 9 1. Introduction to GHC ....................................................................................................................10 1.1. The (batch) compilation system components.....................................................................10 1.2. What really happens when I “compile” a Haskell program? .............................................11 1.3. Meta-information: Web sites, mailing lists, etc. ................................................................11 1.4. GHC version numbering policy .........................................................................................12 1.5. Release notes for version 4.08 (July 2000) ........................................................................13 1.5.1. User-visible compiler changes...............................................................................13 1.5.2. User-visible library changes ..................................................................................14 1.5.3. Internal changes.....................................................................................................14 2. Installing from binary distributions............................................................................................16 2.1. Installing on Unix-a-likes...................................................................................................16 -
Haskhol: a Haskell Hosted Domain Specific Language for Higher-Order
HaskHOL: A Haskell Hosted Domain Specific Language for Higher-Order Logic Theorem Proving BY c 2011 Evan Christopher Austin Submitted to the graduate degree program in Electrical Engineering & Computer Science and the Graduate Faculty of the University of Kansas in partial fulfillment of the requirements for the degree of Master of Science. Chairperson Dr. Perry Alexander Dr. Andy Gill Dr. Arvin Agah Date Defended: July 26, 2011 The Thesis Committee for Evan Christopher Austin certifies that this is the approved version of the following thesis: HaskHOL: A Haskell Hosted Domain Specific Language for Higher-Order Logic Theorem Proving Chairperson Dr. Perry Alexander Date Approved: July 26, 2011 ii Abstract HaskHOL is an implementation of a HOL theorem proving capability in Haskell. Motivated by a need to integrate theorem proving capabilities into a Haskell-based tool suite, HaskHOL began as a simple port of HOL Light to Haskell. However, Haskell's laziness, immutable data, and monadic extensions both complicate an implementation and enable a new feature class. This thesis describes HaskHOL, its motivation and implementation. Its use to implement a primitive, interactive theorem prover is explored and its performance is evaluated using a collection of intuitionistically valid problems. iii Acknowledgements Dr. Perry Alexander has served as a constant inspiration, mentor, and friend since very early in my college career. His guidance and the myriad of opportunities he has afforded me have kindled a passion for formal methods research that I can honestly say I would not have had otherwise. Dr. Andy Gill was the first professor I had at KU who challenged me to go above and beyond what was required for a course. -
Haskell Quick Syntax Reference
Haskell Quick Syntax Reference A Pocket Guide to the Language, APIs, and Library — Stefania Loredana Nita Marius Mihailescu www.allitebooks.com Haskell Quick Syntax Reference A Pocket Guide to the Language, APIs, and Library Stefania Loredana Nita Marius Mihailescu www.allitebooks.com Haskell Quick Syntax Reference: A Pocket Guide to the Language, APIs, and Library Stefania Loredana Nita Marius Mihailescu Bucharest, Romania Bucharest, Romania ISBN-13 (pbk): 978-1-4842-4506-4 ISBN-13 (electronic): 978-1-4842-4507-1 https://doi.org/10.1007/978-1-4842-4507-1 Copyright © 2019 by Stefania Loredana Nita and Marius Mihailescu This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. -
Pcl: a Robust Monadic Parser Combinator Library for Ocaml
Motivation Basic Monadic Parser Combinators Writing pcl pcl: A Robust Monadic Parser Combinator Library for OCaml Chris Casinghino [email protected] OCaml Summer Project Meeting Chris Casinghino pcl: A Robust Monadic Parser Combinator Library for OCaml Motivation Basic Monadic Parser Combinators Writing pcl Outline 1 Motivation 2 Basic Monadic Parser Combinators What Is A Parser? Building Bigger Parsers 3 Writing pcl Chris Casinghino pcl: A Robust Monadic Parser Combinator Library for OCaml Motivation Basic Monadic Parser Combinators Writing pcl Outline 1 Motivation 2 Basic Monadic Parser Combinators What Is A Parser? Building Bigger Parsers 3 Writing pcl Chris Casinghino pcl: A Robust Monadic Parser Combinator Library for OCaml Motivation Basic Monadic Parser Combinators Writing pcl Benefits of Parser Combinators Parsers are specified directly in target language. No need to learn seperate grammar specification language. Parser may be modified on the fly, no seperate building process. Parsers are typechecked. Easy to extend set of available combinators. Lexer and parser may be written with the same tool. Chris Casinghino pcl: A Robust Monadic Parser Combinator Library for OCaml Motivation Basic Monadic Parser Combinators Writing pcl Parsec: Parser Combinators for Haskell Parsec is a popular monadic parser combinator library for Haskell. Parsec has been around for years, and is widely used. Large combinator library, including parsers for lexing, expressions, etc. Expressive error reporting, efficient. pcl is, in large part, a port of Parsec -
Eclipsefp & Leksah
EclipseFP & Leksah TAIMO PEELO 20.05.2009 EclipseFP • plugin for eclipse IDE platform • goal is to support all kinds of functional programming languages in Eclipse • current subprojects – Haskell module – Common module – Cohatoe module – OCaml module (admittedly dead) Downloading EclipseFP • http://eclipsefp.sourceforge.net/ – bit inactive, latest integration build 14 Sep 2008 – see downloads section • natural choice: try the latest – current prerequisites • JVM >= 5.0 • eclipse >= 3.2 • ghc ? – I had 6.8.2 Installing EclipseFP • downloaded the archive, followed the instructions – no dice, nothing new in Eclipse • argh, trying with update site then – http://eclipsefp.sf.net/updates – older version only, 0.10.0 Using EclipseFP • Help → Contents → Functional Programming • File → New Project → Haskell Project – ... and create new haskell module :) • first things noticed – error reporting not exhaustive – autocompletion (code assist) dumb – run in GHCi /hugs does nothing – “navigate to” (ctrl + click) not present!? Still Using EclipseFP • Haddock documentation generation – File → Export → Other → Haddock documentation Mysterious Cohatoe • that bastard is not installed with EclipseFP : – ... and is not available from update site – version 0.12.0 distributed as update site archive at • http://eclipsefp.sourceforge.net/cohatoe/index.html • contains runtime, SDK and examples • “but what does it do, mummy?” – Help → Contents → Cohatoe ... – "Contributing Haskell (code) to Eclipse"” Catching of the Cohatoe • Cohatoe Examples menu appeared... • EclipseFP has broken link to cohatoe-api – google for cohatoe-api_1.0.0.zip • Leif Frenzel has written Cohatoe quickstart – http://cohatoe.blogspot.com/ Taming of the Cohatoe • ps ax | grep haskell – haskellserver 57053 /usr/lib/ghc-6.8.2 – the beast is running :) Basic Cohatoe • Eclipse plugin extensions :) • consider Haskell function – doSmthWith :: String → String – .. -
The Λ Abroad a Functional Approach to Software Components
The ¸ Abroad A Functional Approach To Software Components Een functionele benadering van software componenten (met een samenvatting in het Nederlands) Proefschrift ter verkrijging van de graad van doctor aan de Universiteit Utrecht op gezag van de Rector Magni¯cus, Prof. dr W.H. Gispen, ingevolge het besluit van het College voor Promoties in het openbaar te verdedigen op dinsdag 4 november 2003 des middags te 12.45 uur door Daniel Johannes Pieter Leijen geboren op 7 Juli 1973, te Alkmaar promotor: Prof. dr S.D. Swierstra, Universiteit Utrecht. co-promotor: dr H.J.M. Meijer, Microsoft Research. The work in this thesis has been carried out under the auspices of the research school IPA (Institute for Programming research and Algorithmics), and has been ¯nanced by Ordina. Printed by Febodruk 2003. Cover illustration shows the heavily cratered surface of the planet Mercury, photographed by the mariner 10. ISBN 90-9017528-8 Contents Dankwoord ix 1 Overview 1 2 H/Direct: a binary language interface for Haskell 5 2.1 Introduction ................................ 5 2.2 Background ................................ 6 2.2.1 Using the host or foreign language ............... 7 2.2.2 Using an IDL ........................... 8 2.2.3 Overview ............................. 9 2.3 The Foreign Function Interface ..................... 12 2.3.1 Foreign static import and export ................ 12 2.3.2 Variations on the theme ..................... 13 2.3.3 Stable pointers and foreign objects ............... 14 2.3.4 Dynamic import ......................... 15 2.3.5 Dynamic export ......................... 15 2.3.6 Implementing dynamic export .................. 18 2.3.7 Related work ........................... 19 iv Contents 2.4 Translating IDL to Haskell ...................... -
Extrapolate: Generalizing Counterexamples of Functional Test Properties
This is a repository copy of Extrapolate: generalizing counterexamples of functional test properties. White Rose Research Online URL for this paper: https://eprints.whiterose.ac.uk/129498/ Version: Accepted Version Proceedings Paper: Braquehais, Rudy and Runciman, Colin orcid.org/0000-0002-0151-3233 (Accepted: 2018) Extrapolate: generalizing counterexamples of functional test properties. In: IFL 2017: 29th Symposium on the Implementation and Application of Functional Programming Languages. ASSOC COMPUTING MACHINERY , New York . (In Press) Reuse Items deposited in White Rose Research Online are protected by copyright, with all rights reserved unless indicated otherwise. They may be downloaded and/or printed for private study, or other acts as permitted by national copyright laws. The publisher or other rights holders may allow further reproduction and re-use of the full text version. This is indicated by the licence information on the White Rose Research Online record for the item. Takedown If you consider content in White Rose Research Online to be in breach of UK law, please notify us by emailing [email protected] including the URL of the record and the reason for the withdrawal request. [email protected] https://eprints.whiterose.ac.uk/ Extrapolate: generalizing counterexamples of functional test properties Rudy Braquehais Colin Runciman University of York, UK University of York, UK [email protected] [email protected] ABSTRACT properties in Haskell. Several example applications demonstrate This paper presents a new tool called Extrapolate that automatically the effectiveness of Extrapolate. generalizes counterexamples found by property-based testing in Example 1.1. Consider the following faulty sort function: Haskell.