background preloader

Haskell

Facebook Twitter

Can’t see the FOUR-est for the trees. 2 June 2017 I was recently reading an excellent book about math education, What’s Math Got to Do with It by Jo Boaler which included the following puzzle called “The Four 4s”.

Can’t see the FOUR-est for the trees.

Try to make every number between 0 and 20 using only four 4s and any mathematical operation (such as multiplication, division, addition, subtraction, raising to a power, or finding a square root), with all four 4s being used each time. For example 5=√4+√4+44 How many of the numbers between 0 and 20 can be found? It’s a fun puzzle so you may want to take a crack at it yourself before reading on. But this isn’t really about that puzzle.

When I tried to do the puzzle I pretty quickly worked out expressions for the numbers zero to ten. So back to the scrap paper. The expressions I’m looking for can be represented by trees with four leaves, all of which are 4s. As it turns out, the Catalan numbers come up a lot in combinatorics. I can start by defining a data type to represent the trees. Trees :: [Tree] -> [Tree] $ . $ . For Beginners. Tutorial for C Programmers. Haskell Tutorial for C Programmers, by Eric Etheridge version 3.0 - please increment with major updates original author: Eric Etheridge last major update by the original author: August 28, 2011 year of original release (on old haskell.org site): 2005.

Tutorial for C Programmers

How to desugar Haskell code. Haskell's core language is very small, and most Haskell code desugars to either: lambdas / function application,algebraic data types / case expressions,recursive let bindings,type classes and specialization, or:Foreign function calls Once you understand those concepts you have a foundation for understanding everything else within the language.

How to desugar Haskell code

As a result, the language feels very small and consistent. I'll illustrate how many higher-level features desugar to the same set of lower-level primitives. MiniKanren in Haskell. This year at Strange Loop I was totally blown away by the miniKanren talk by Daniel Friedman and William Byrd.

miniKanren in Haskell

I highly recommend watching the presentation. It is simultaneously entertaining and mind blowing. Friedman and Byrd used an extended version of miniKanren, a logic programming language (a la prolog) embedded in scheme, to do several remarkable things: This was something that I clearly did not know enough about yet. Usually when I want to really learn and understand something in CS, I try to implement it. Tutorial for C Programmers. Using Difference Lists. I posted my enthusiasm about difference lists for Haskell earlier this month, but then became sidetracked by combinators and reading lists, so, let's get back on track.

Using Difference Lists

Difference lists are a (very) useful data structure in Prolog, particularly when it comes to parsing with definite clause grammars (DCGs) and when it comes to list construction (again, using DCGs). Why? Well, to answer that question, let's examine the structure of difference lists. The Prolog (or relational) representation of a difference list is of the form: What that relation describes is that X is the difference of the pair of lists of (first) [1,2,3] appended with the list Yminus (second) the list Y. Well, what is the value of the list Y? "Big deal! " Functional programming - Getting started with Haskell. Writing A Lisp Interpreter In Haskell.

Haskell/Zippers - Wikibooks, open books for an open world. Using Difference Lists. Publicstuff/boids.hs at master · mjsottile/publicstuff. Haskell, list of natural number. Video presentations. Collected videos of Haskell tutorials and conference presentations, sorted by topic.

Video presentations

For more recent videos, check: How to desugar Haskell code. Haskell/XML. There are several Haskell libraries for XML work, and additional ones for HTML.

Haskell/XML

For more web-specific work, you may want to refer to the Haskell/Web programming chapter. Haskell XML Toolbox 9.2.0. Contents Introduction The Haskell XML Toolbox is a collection of tools for processing XML with Haskell.

Haskell XML Toolbox 9.2.0

It is purely written in Haskell. The Haskell XML Toolbox is a project of the University of Applied Sciences Wedel, The main design goal of the Haskell XML Toolbox is the support of various XML standards including Extensible Markup Language (XML) 1.0 (Second Edition) with DTD processing and Validation, Namespaces in XML 1.0 (Second Edition), XML Path Language (XPath), XSL Transformations (XSLT), RELAX NG Specification, as well as HTML/XHTML processing.

DCG's compared to Haskell monads. In article 062.7...

DCG's compared to Haskell monads

@news20.bellglobal.com>, - show quoted text - Alan Baljeu <aba... @sympatico.deleteme.ca> wrote:>Monads are a tool to make the state of a computation implicit. Combinators in Haskell. In this article, instead of continuing along my path of shoving Prolog (predicate logic) into Haskell, I'll take a break from that and shove Haskell into Haskell.

Combinators in Haskell

This turn comes by way of my recent professional experience working with Prolog — I found myself oftentimes needing to write some purely functional code, but I found the Prolog semantics getting in my way, so, borrowing some of the ideas from my previous professional programming experiences with Mercury and Dylan (when Harlequin was still a going concern, and had picked up the Dylan ball that Apple, then CMU, dropped, making a really sweet Dylan programming environment), I implemented a set of libraries for Prolog, including basic ZF-set operations, propositional logic syntax, list/set/bag utilities, and the combinator logic of Schönfinkel. "geophf!

" You exclaim, horrified, "you don't really use combinators to write working production code, do you? " That was quite a trip down memory lane. Life is good. fix f = let x = f x in x. Haskelliseasy. To make it more true that Haskell is easy, here's a list of curated libraries. In the personality descriptions matching you to a library, be honest with yourself about where you're at and what your needs are. This isn't listing for listing's sake.

I've either used it or someone whose taste and experience I really trust has used it. If you list everything, the list is useless to somebody that can't sniff test the API quickly. Bitemyapp/learnhaskell. Haskell and XML: Generic Combinators or Type-Based Translation? Malcolm Wallace and Colin Runciman Abstract: We present two complementary approaches to writing XML document-processing applications in a functional language.In the first approach, the generic tree structure of XML documents is used as the basis for the design of a library of combinators for generic processing: selection, generation, and transformation of XML trees.The second approach is to use a type-translation framework for treating XML document type definitions (DTDs) as declarations of algebraic data types, and a derivation of the corresponding functions for reading and writing documents as typed values in Haskell.Published in the Proceedings of the International Conference on Functional Programming, Paris, Sept 1999.

ACM Copyright. 1 Introduction. Introduction to HaXml. I was looking for a HaXml tutorial or some code examples on the web but I could not find any description of the basic idea behind the library. There is a tutorial here icfp99, but its focus is more on the power of combinators than on the library basics. There is also a code fragment in realworldhaskell but (at the time of writing this post) it is outdated. The aim of this tutorial is to describe the basic HaXml functionality - reading XML data from a file into custom types and saving the data from these types back to another file.

Your First Haskell Application (with Gloss) - Andrew Gibiansky. Congratulations! You’ve written a fully-functional executable package. Although a game of Pong is unlikely to be useful to anyone, if this were a useful executable or library you would want it to share it with the world. The cabal tool makes it very easy to upload your code to Hackage. First, you must generate a distribution package using sdist: This will create a tarball (a bundle with the tar.gz extension) and tell you where it placed the tarball.

Source tarball created: dist/pong-0.1.0.0.tar.gz Then, you can upload with the following command, replacing my tarball path with whatever cabal sdist gave you: cabal upload dist/pong-0.1.0.0.tar.gz cabal upload will prompt you for your Hackage username and password, and then upload the file. After you run cabal upload, Hackage will host your package forever. Lesson 1: Getting Started - Graphical Haskell for Beginners. Topics What is computer programming? Why would you want to learn how to write computer programs? Is computer programming the right choice for you? In some ways, computer programming is one of the most exciting and rewarding things you can do. We all use computers, but most people only use their computers to do things that other people decided they should do.

In this lesson, we'll see computer programming is about. Tip: If you don't completely understand everything in this section, don't worry about it! Write Yourself a Scheme in 48 Hours. Overview Most Haskell tutorials on the web use a style of teaching akin to language reference manuals. They show you the syntax of the language, a few language constructs, then tell you to create a few simple functions at the interactive prompt. The "hard stuff" of how to write a functioning, useful program is left to the end, or omitted entirely.

Monads

[ny-haskell] Abstractions for the Functional Roboticist with Anthony Cowley. Functional flocks. One of my favorite topics is Artificial Life – how can we build simple computational models of things that we would consider to be living. Often, this focuses on finding simple models for behavior. I’m a member of the International Society of Artificial Life, which has an interesting journal that (in my opinion) justifies my yearly membership fee. Two topics in ALife that I have found consistently interesting are artificial chemistries and flocking behavior. Haskel boids. The premiere Mathematica package for computational Category Theory. Diagrams in Category Theory – Good Math, Bad Math. One of the things that I find niftiest about category theory is category diagrams. MIT18 712F10 ch6. Converting object oriented to functional. Oop - Explaining functional programming to object-oriented programmers and less technical people.

Object oriented - How to refactor an OO program into a functional one? Haskell Programming Language. Db utwente 40501F46. Category Theory State Monad. In pure functional programs we can't have functions that depend on something other than the parameters of the function, or any 'side effects', that means that we can't have variables, input or output. If we followed this rigidly then functional programs would not be very useful.

However, the monad gives us a workaround for this, a way to encapsulate these side effects so that most of the program is pure functional code. Rosetta. Does category theory make you a better programmer ? Category Theory. Haskell. Typeclassopedia. By Brent Yorgey, byorgey@cis.upenn.edu Originally published 12 March 2009 in issue 13 of the Monad.Reader. A Haskell Implementation Reading List. A Haskell Reading List. Composing Reactive Animations. Haskell-operatorer.pdf. View topic - Haskell vs Prolog, or "Giving Haskell a choice" I've become more and more familiar with Haskell, and more and more have I begun to realize its true potential. It's truly frightening, really. One of the things I've started to realize is how well it can adapt different programming paradigms without sacrificing its functional purity.Another language I'm quite fond of is Prolog, and I'm actually somewhat sad I haven't spent more time hacking in it.That said, I decided to try a little experiment: writing Prolog in Haskell, staying as true to Prolog as possible, and see if the forced paradigm breaks it.

I'll be rather thorough in explaining how things work for the benefit of the Prolog and Haskell illiterates out there, so if you're familiar with both you might want to tl;dr, or just bask in the glory that is Prolog and Haskell combined. Category Theory for Programmers: The Preface. Haskell/Category theory. Untitled. HaXml: Haskell and XML.

Maclanecat. The Curry-Howard Correspondence in Haskell. Curry–Howard correspondence. HXT/Conversion of Haskell data from/to XML - HaskellWiki. HXT - HaskellWiki. The days of coding high adventure: Introduction to HaXml. Haskell and XML: Generic Combinators or Type-Based Translation? Text.XML.HaXml.Combinators. Ghcjs/ghcjs. Reactive-banana/Animation.hs at master · HeinrichApfelmus/reactive-banana. Tutorials - HaskellWiki. XML Matters: Transcending the limits of DOM, SAX, and XSLT. HaXml: Utilities for manipulating XML documents. Parallel and Concurrent Programming in Haskell. MIT18_S996S13_textbook. MIT18_S996S13_chapter4.pdf. Tools09_pres. Is Category Theory similar to Graph Theory? Arrows.pdf. Arrows: A General Interface to Computation. CPS based functional references.

Parser_pearl.pdf. Haskell for Mainstream Programmers - State. Haskell/Applicative functors. Hackage: Introduction. The Haskell 98 Language Report. Why Functional Programming Matters. Haskell. Introduction. Real World Haskell. Haskell/Applicative functors. Haskell/The Functor class. Post-rfc/sotu.md at master · Gabriel439/post-rfc. Keera Studios. Diagrams - About Diagrams. The functor design pattern. The category design pattern. Welcome to FP Haskell Center. Lisperati. Learn You a Haskell for Great Good!

HaskellWiki. Haskell Language. Haskell. Learn Haskell Fast and Hard. Stack and GHC on Windows. A Journal of Haskell Programming. Haskell for all.