News aggregator

Do all "fromList" functions redirect to Listoperations?

haskell-cafe - Tue, 04/14/2015 - 11:09pm
Hello all, I have a datatype like this: data Time = DPast | T Integer deriving (Eq, Show) data Temporal a = Temporal { at :: Time -> (a, Maybe Time) } and I wrote a fromList function to create one. The fromList function implements it own "at" function and wraps it in a Temporal. IIUC, this means that whenever I invoke "at" on a Temporal created from a List I actually operate on that List. Alternatively I can directly create a Temporal as in exNat = Temporal f where f DPast = (0, Just $ T 1) f (T t) = (t, Just $ T $ t+1) whose "at" function is a lot faster. Do all "fromList" functions behave this way, i.e. they redirect operations on the new type to List operations? Is there a way to make a Temporal, created via fromList "forget" its List heritage?
Categories: Offsite Discussion

FP Complete: The future of School of Haskell and FP Haskell Center

Planet Haskell - Tue, 04/14/2015 - 11:00pm

Last month, we announced the open sourcing of ide-backend, the engine underlying both School of Haskell and FP Haskell Center. In this blog post, I'm going to lay out FP Complete's plans for the future of both of those services, and our overall commercial Haskell tooling.

tl;dr Open sourcing School of Haskell, releasing brand new open source Stackage-based tooling, and merging the features of FP Haskell Center into the other two offerings.

School of Haskell

School of Haskell has served as a foundational service for interactive Haskell training, written in a collaborative way. In our efforts to help increase adoption of Haskell, we've decided that the best next step for the evolution of School of Haskell is to fully open source it. Concretely, our plans are:

  • Open up a new code base for School of Haskell, under the auspices of the Commercial Haskell Special Interest Group
  • Host the site on its own dedicated domain name,
  • Set up redirects as necessary
  • Make the content of School of Haskell much more open
    • Make the terms of use more open, likely moving towards a Creative Commons license
    • Make it easier to interact with the raw content of the school, possibly by storing the content in a Git repository that is publicly cloneable
    • Encourage collaborators on the code base to get new features in place (and see the FP Haskell Center discussion below for more information on this from us)

To be clear: FP Complete fully intends to continue maintaining both the code base and the live servers. This move is intended to allow others to contribute their own, wonderful new ideas to the project.

Stackage-based Tooling

FP Complete started the Stackage project about three years ago to address issues around library compatibility and collaborative development on teams, and it has been a resounding success. It's already the basis for School of Haskell and FP Haskell Center, and with Stackage Server is fully available to all users as an easy way to get sane package sets. We started LTS Haskell at the beginning of this year, which has only increased that success further.

Today's Stackage project answers a lot of the demand for better tooling, especially in the commercial realm. However, it doesn't answer everything. Companies we work with need solutions for everything from CI integration, to editor plugins, to deployment solutions. FP Haskell Center answers some of these demands, but not all of them. Over the past year, we've been working with our customers to develop a commercial grade set of tools that solve these problems more holistically, and we are happy with the result.

Our new tooling is integrated tightly with Stackage, provides improvements to some flaws in currently available tooling, and adds in functionality not yet present at all in the open source world. For example:

  • Distribution of binary package databases to your whole team, avoiding recompile time and ensuring consistent environments
  • Reliable rebuilding of all local packages with a single command
  • Built in documentation serving for your entire package set
  • Powerful code exploration features

We feel comfortable with the quality of the tooling to now take it to the next step. So over the next few weeks, we will begin the process of open sourcing all of this tooling to the Haskell community. As we release components, we will be describing their functionality, explaining expected use cases, and documenting current shortcomings. But the short answer is: if you're working on developing Haskell applications, this tooling is likely to make your life significantly better.

FP Haskell Center

This leaves the question: what of FP Haskell Center? We initially received a lot of requests from companies looking for a web based IDE. However, over the past two years, we have seen that- in reality- people were looking to solve two different use cases:

  • For learners: an easy way to get started with learning Haskell
  • For application writers: a reliable set of tools for developing, building, and shipping software

After careful consideration, we believe that the two offerings mentioned above- School of Haskell and Stackage-based tooling- are the best way forward, and that continuing to push FP Haskell Center as a development platform is not a good path forward. Instead, our goals are to take the best that FP Haskell Center has to offer, such as interactive type information, and make them available in both School of Haskell and our commercial tooling.

At the end of the day, we'll be offering two very complementary products: a hosted learning site for quickly getting up to speed with Haskell, and commercial grade tooling for writing software.


The first concrete step on this path is going to be our Stackage-based tooling work. We're hoping to get a first public version out the door in short order. The following step is open sourcing School of Haskell. Once that is fully done, we'll start the discussions around FP Haskell Center. It is still a service that many people use, and we have no intention of pulling the rug out from under people. Our timeline their will likely be to:

  • leave FP Haskell Center running for quite a while
  • when School of Haskell and Stackage-based tooling become solid enough offerings to replace it, officially deprecate it
  • some time after that, stop offering FP Haskell Center as a separate service

We very much welcome community input on these plans. Let's kick off a discussion on Reddit.

Categories: Offsite Blogs

FunDeps and type inference

haskell-cafe - Tue, 04/14/2015 - 10:12pm
Dear cafe, I want to write an evaluation function that uncurries its function argument as necessary. Examples should include: eval :: (a -> b) -> a -> b eval :: (a -> b -> c) -> a -> (b -> c) eval :: (a -> b -> c) -> (a,b) -> c and hence have both eval (+) 4 5 eval (+) (4,5) typecheck. My approach is to use a type class: class Uncurry f a b where eval :: f -> a -> b instance Uncurry (a -> b) a b where eval = ($) instance (Uncurry f b c) => Uncurry ((->) a) f) (a,b) c where eval f (a,b) = eval (f a) b This works, but not for polymorphic arguments. One must annotate function and argument with concrete types when calling, otherwise the runtime does not know what instance to use. Type inference on ($) is able to infer the type of either of f, a or b in the expression b = f $ a if the type of two is known. Thus I am tempted to add functional dependencies class Uncurry f a b | f a -> b, a b -> f, f b -> a but I get scary errors: With only the first of the three dependencies, the coverage conditio
Categories: Offsite Discussion

Mark Jason Dominus: I'm old

Planet Haskell - Tue, 04/14/2015 - 9:29pm

This week I introduced myself to Recurse Center, where I will be in residence later this month, and mentioned:

I have worked as a professional programmer for a long time so I sometimes know strange historical stuff because I lived through it.

Ms. Nikki Bee said she wanted to hear more. Once I got started I had trouble stopping.

I got interested in programming from watching my mom do it. I first programmed before video terminals were common. I still remember the smell of the greasy paper and the terminal's lubricating oil. When you typed control-G, the ASCII BEL character, a little metal hammer hit an actual metal bell that went "ding!".

I remember when there was a dedicated computer just for word processing; that's all it did. I remember when hard disks were the size of washing machines. I remember when you could buy magnetic cores on Canal Street, not far from where Recurse Center is now. Computer memory is still sometimes called “core”, and on Unix your program still dumps a core file if it segfaults. I've worked with programmers who were debugging core dumps printed on greenbar paper, although I've never had to do it myself.

I frequented dialup BBSes before there was an Internet. I remember when the domain name system was rolled out. Until then email addresses looked like yuri@kremvax, with no dots; you didn't need dots because each mail host had a unique name. I read the GNU Manifesto in its original publication in Dr. Dobb's. I remember the day the Morris Worm hit.

I complained to Laurence Canter after he and his wife perpetrated the first large scale commercial spamming of the Internet. He replied:

People in your group are interested. Why do you wish to deprive them of what they consider to be important information??

which is the same excuse used by every spammer since.

I know the secret history of the Java compiler, why Java 5.0 had generics even though Sun didn't want them, and why they couldn't get rid of them. I remember when the inventors of LiveScript changed its name to JavaScript in a craven attempt to borrow some of Java's buzz.

I once worked with Ted Nelson.

I remember when Sun decided they would start charging extra to ship C compilers with their hardware, and how the whole Internet got together to fund an improved version of the GNU C compiler that would be be free and much better than the old Sun compiler ever was.

I remember when NCSA had a web page, updated daily, called “What's New on the World Wide Web”. I think I was the first person to have a guest book page on the Web. I remember the great land rush of 1996 when every company woke up at the same time and realized it needed a web site.

I remember when if you were going to speak at a conference, you would mail a paper copy of your slides to the conference people a month before so they could print it into books to hand out to the attendees. Then you would photocopy the slides onto plastic sheets so you could display them on the projector when you got there. God help you if you spilled the stack of plastic right before the talk.

tl;dr i've been around a while.

However, I have never programmed in COBOL.

(I'm not actually very old, but I got started very young.)

Categories: Offsite Blogs

Haddock and re-exports from other-modules

Haskell on Reddit - Tue, 04/14/2015 - 8:59pm

Supposing I have these modules:

module Private where a :: Int a = 3 module Public(module Public) where import Private as Public b :: Bool b = False

And the .cabal file has this:

exposed-modules: Public other-modules: Private

In Haskell, from another package, if I do "import Public" I get access to both "a" and "b". I cannot do "import Private". This is what I want. I am doing this to aggregate many modules with small interfaces (but possibly large implementations) into one module interface for import.

But the haddock documentation for my package shows only "b", not "a" for "Public". Am I doing something wrong? Is this a bug in haddock? What's the nicest workaround?

submitted by AshleyYakeley
[link] [7 comments]
Categories: Incoming News

Proposal: Add exception info

libraries list - Tue, 04/14/2015 - 7:38pm
Control.Exception currently lacks a good way to supply extra information along with exceptions. For example, exceptions could be thrown along with their callstack[1] or implicit stack[2], but we have no generic way to include this information with exceptions. Proposed Solution ================= The proposed solution is to add a list of `SomeExceptionInfo` to the `SomeException` datatype. This list stores additional information about the exception. These `ExceptionInfo` instances use a mechanism which is pretty much identical to the dynamic way the `Exception` type works: data SomeException = forall e . Exception e => SomeExceptionWithInfo e [SomeExceptionInfo] data SomeExceptionInfo = forall a . ExceptionInfo a => SomeExceptionInfo a class Typeable a => ExceptionInfo a where displayExceptionInfo :: a -> String addExceptionInfo :: (ExceptionInfo a, Exception e) => a -> e -> SomeException addExceptionInfo x (toException -> SomeExceptionWithIn
Categories: Offsite Discussion

Brent Yorgey: Polynomial Functors Constrained by Regular Expressions

Planet Haskell - Tue, 04/14/2015 - 7:22pm

I’ve now finished revising the paper that Dan Piponi and I had accepted to MPC 2015; you can find a PDF here:

Polynomial Functors Constrained by Regular Expressions

Here’s the 2-minute version: certain operations or restrictions on functors can be described by regular expressions, where the elements of the alphabet correspond to type arguments. The idea is to restrict to only those structures for which an inorder traversal yields a sequence of types matching the regular expression. For example, gives you even-size things; gives you the derivative (the structure has a bunch of values of type , a single hole of type , and then more values of type ), and the dissection.

The punchline is that we show how to use the machinery of semirings, finite automata, and some basic matrix algebra to automatically derive an algebraic description of any functor constrained by any regular expression. This gives a nice unified way to view differentiation and dissection; we also draw some connections to the theory of divided differences.

I’m still open to discussion, suggestions, typo fixes, etc., though at this point they won’t make it into the proceedings. There’s certainly a lot more that could be said or ways this could be extended further.

Categories: Offsite Blogs

Bed & Breakfast maintainer?

libraries list - Tue, 04/14/2015 - 6:05pm
Anyone out there maintaining (or willing to take over) the bed-and-breakfast package? 0.4.3 (the latest release) doesn't compile with 7.8 because of the changes to Typeable. The git repo has fixes for this in it, along with some other stuff, but that's nearly a year old, and hasn't been released yet. My requests to the author & maintainer (Julian Fleischer < julian.fleischer< at >>) have gone unanswered. _______________________________________________ Libraries mailing list Libraries< at >
Categories: Offsite Discussion

Final CFP - SBLP 2015: 19th Brazilian Symposium onProgramming Languages

General haskell list - Tue, 04/14/2015 - 3:47pm
FINAL CALL FOR PAPERS - SBLP 2015 19th Brazilian Symposium on Programming Languages 21-26 September 2015 Belo Horizonte, Brazil *** DEADLINE APPROACHING *** +++++++++++++++++++++++++++++++++++++++++++++++++++ IMPORTANT DATES Abstract submission: 20 April, 2015 Paper submission: 27 April, 2015 Author notification: 18 June, 2015 Camera ready deadline: 2 July 2015 INTRODUCTION The Brazilian Symposium on Programming Languages is a well-established symposium which provides a venue for researchers and practitioners interested in the fundamental principles and innovations in the design and implementation of programming languages and systems. SBLP 2015 is part of 6th Brazilian Conference on Software: Theory and Practice, CBSoft 2015, that will be held in Belo Horizonte, Minas Gerais, Brazil, from September 21st to September 26th, 2015. Authors are invited to submit original research on any relevant topic which can be either in the form of regular or short papers. TOPICS Topic
Categories: Incoming News

LOLA 2015: Second Call for Talk Proposals

General haskell list - Mon, 04/13/2015 - 5:29pm
SECOND CALL FOR TALK PROPOSALS ______________________________________________________________________ LOLA 2015: Syntax and Semantics of Low Level Languages Sunday, 5 July 2015, Kyoto, Japan A satellite workshop of ICALP/LICS ______________________________________________________________________ /Important Dates/ Abstract submission: Monday, 20 April 2015 Author notification: Friday, 1 May 2015 LOLA 2015 workshop: Sunday, 5 July 2015 /Invited Speakers/ Katsuhiro Ueno, Tohoku University, Japan Other invited speakers to be announced. /Workshop Description/ It has been understood since the late 1960s that tools and structures arising in mathematical logic and proof theory can usefully be applied to the design of high level programming languages, and to the development of reasoning principles for such languages. Yet low level languages, such as machine code, and the compilation of high level languages into a low level ones have traditionally been seen as having little
Categories: Incoming News


glasgow-user - Sat, 04/11/2015 - 5:44pm
What’s the story with this? I tried to follow the instructions here: <> but I get Dominic Steinitz dominic< at > _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users< at >
Categories: Offsite Discussion

New gtk2hs 0.12.4 release

gtk2hs - Wed, 11/21/2012 - 12:56pm

Thanks to John Lato and Duncan Coutts for the latest bugfix release! The latest packages should be buildable on GHC 7.6, and the cairo package should behave a bit nicer in ghci on Windows. Thanks to all!


Categories: Incoming News