News aggregator

Call for Papers: TASE 2014

General haskell list - Thu, 01/16/2014 - 2:24am
TASE 2014 - CALL FOR PAPERS ****************************************************************** The 8th International Symposium on Theoretical Aspects of Software Engineering (TASE 2014) 1-3 September 2014, Changsha, China http://www.nudt.edu.cn/tase2014 For more information email: TASE2014< at >nudt.edu.cn ****************************************************************** OVERVIEW The 8th Theoretical Aspects of Software Engineering Symposium (TASE 2014), will be held in Changsha, China in September, 2014. Modern society is increasingly dependent on software systems that are becoming larger and more complex. This poses new challenges to the various aspects of software engineering, for instance, software dependability in trusted computing, interaction with physical components in cyber physical systems, distribution in cloud computing applications, etc. Hence, new concepts and
Categories: Incoming News

ANN: castle 0.1.0.0

haskell-cafe - Wed, 01/15/2014 - 10:24pm
I'd like to announce the first release of castle ( http://hackage.haskell.org/package/castle and https://github.com/erochest/castle). From the README: This tool is still pretty rough around the edges, but I've been using it some, and it's to the point that more feedback would be helpful. Let me know what bugs and rough patches you find. Thanks, Eric _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe< at >haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Categories: Offsite Discussion

What's up with Contravariant?

Haskell on Reddit - Wed, 01/15/2014 - 9:27pm

What's it for? I know the Functor class is for computations with a context, and Contravariant is similar in the type signature. Is it possible to use Contravariant with Applicative and Monad?

submitted by danmwilson
[link] [14 comments]
Categories: Incoming News

System.FilePath.splitFileName

libraries list - Wed, 01/15/2014 - 4:42pm
Hi, I suggest to improve the documentation for System.FilePath.splitFileName. The sentence "combine is the inverse" (of splitFileName) is misleading, as the following example shows: Prelude System.FilePath> uncurry combine $ splitFileName "bob" "./bob" adding normalize to the result only also gives not (String) identity: Prelude System.FilePath> normalise $ uncurry combine $ splitFileName "./bob" "bob" I suggest to change it to: "combine is the inverse modulo normalise or equalFilePath" Maybe also the following combine examples should be added: combine "./" "bob" == "./bob" combine "." "bob" == "./bob" http://www.haskell.org/ghc/docs/latest/html/libraries/filepath-1.3.0.1/System-FilePath-Posix.html#g:5 Cheers Christian
Categories: Offsite Discussion

Yesod Web Framework: PSA: Please use yesod-platform

Planet Haskell - Wed, 01/15/2014 - 3:57pm

Recently, a large number of the dependencies for Yesod (aeson, fast-logger, warp, attoparsec, etc) have gone through major version bumps. At the same time, a number of other dependencies of Yesod have not relaxed their version bounds for the most recent versions of their dependencies. This situation leads to a lot of confusion for cabal trying to figure out a coherent installation path.

This is precisely the situation for which the yesod-platform situation was designed. If you are having trouble getting Yesod installed, please try running cabal install yesod-platform instead of yesod. (In fact, unless you have reason to do otherwise, I highly recommend always doing this.) If you have an existing project with its own set of dependencies, go into that directory and run cabal install . yesod-platform, which will attempt to choose a version of yesod-platform with dependencies that fit your constraints. If you use some kind of sandboxing, modify the above commands as necessary.

And let me take this opportunity to mention: if you're trying to build your code on a stable platform, you should make sure that you pin down the versions of all of your dependencies. Greg Weber wrote a great blog post explaining a technique that should fit into most people's standard build processes. Using the Stackage pinned version set will also guarantee builds that are coherent. And of course, building on FP Haskell Center guarantees stable and tested versions of packages which will be maintained.

UPDATE There are two important command line options I should have mentioned. If you're running into dependency hell, try appending the following: --max-backjumps=-1 --reorder-goals.

Categories: Offsite Blogs

Postdocs / Research Programmer for Efficient First-Class Automatic Differentiation

haskell-cafe - Wed, 01/15/2014 - 2:01pm
Postdocs / Research Programmer for Compositional Learning via Generalized Automatic Differentiation The goal of this project is to make a qualitative improvement in our ability to write sophisticated numeric code, by giving numeric programmers access to _fast_, _robust_, _general_, _accurate_ differentiation operators. To be technical: we are adding exact first-class derivative calculation operators (Automatic Differentiation or AD) to the lambda calculus, and embodying the combination in a production-quality fast system suitable for numeric computing in general, and compositional machine learning methods in particular. Our research prototype compilers generate object code competitive with the fastest current systems, which are based on FORTRAN. And the combined expressive power of first-class AD operators and function programming allows very succinct code for many machine learning algorithms, as well as for some algorithms in computer vision and
Categories: Offsite Discussion

Type-Level Instant Insanity

Haskell on Reddit - Wed, 01/15/2014 - 12:06pm
Categories: Incoming News

mdo with multiple values

haskell-cafe - Wed, 01/15/2014 - 11:57am
Dear List, a little puzzle. Given a monad M with a MonadFix instance, and these two functions: act1 :: T -> M () act2 :: a -> M T I morally want to write this function: foo :: [a] -> M () foo = mdo mapM_ act1 xs xs <- mapM act2 return () Unfortunately, that will not work: mapM_ will force xs before any of it can be generated. But morally it should be possible, as the lists passed to mapM_ and mapM have the same, already known list. So here is my solution (which is a bit more general, because I happen to need some that in one place): mapFstMapSnd :: MonadFix m => [(a -> m (), m a)] -> m () mapFstMapSnd xs = const () `liftM` go xs (return []) where go [] cont = cont go ((f,s):xs) cont = mdo f v (v:vs) <- go xs $ do vs <- cont v <- s return (v:vs) return vs Using that, I can write
Categories: Offsite Discussion

Yesod :: Homepage

del.icio.us/haskell - Wed, 01/15/2014 - 11:28am
Categories: Offsite Blogs

Philip Wadler: ADT and GADT implementations of simply-typed lambda calculus

Planet Haskell - Wed, 01/15/2014 - 10:15am
Lennart Augustsson posted a nifty description of a compiler from a simple expression language to LLVM that included a conversion from expressions represented as an ADT to expressions represented as a GADT. The ADT requires a separately implemented type checker, while the GADT piggybacks on Haskell's type system to ensure expressions are well typed. However, Lennart's expression language does not include lambda abstraction.

Based on Lennart's code, I implemented ADT and GADT versions of simply-typed lambda calculus with de Bruijn indices, integer constants, and addition, plus the conversion between them, without the distraction of compiling to LLVM. The code was cleaned and improved by Shayan Najd, and made publicly available via github. Thanks to Josef Svenningson for the pointer to Lennart's post.

Categories: Offsite Blogs

GHC API: runStmt not taking into account reloadedmodule

haskell-cafe - Tue, 01/14/2014 - 10:13pm
It's late here and I'm probably overlooking something stupid, so I'd like if somebody could put my nose on it... I'm using the GHC API to evaluate statements. I use runStmt to get a RunResult, lookupName to get the ID for the bound names, obtainTermFromId to get the term and showTerm to display it. So I can call a function from the loaded module with some parameters and get the result. Good! However, if I reload a module and I change the implementation of the function, runStmt still returns the old value! I know the reload worked because if I added new names, getNamesInScope returns the new names. What do I need to do to make sure the new function definitions are used? I've perused the source code of InteractiveEval and ghci but nothing stood out. I am calling setContext after load. Thanks a million!
Categories: Offsite Discussion