News aggregator

Philip Wadler: Scientists for EU

Planet Haskell - Tue, 06/14/2016 - 9:06am

Scientists for EU wrote a cogent letter explaining how the EU advances UK science, and how UK science advantages the UK. You can sign it here.
Please read this letter, add your name and share this link with other scientists.
Scientific advance and innovation are critically dependent on collaboration. To remain a world-leading science nation, we must be team players.
The EU leads the world in science output, is beating the US in science growth – and is rapidly increasing investment in research. The EU is a science superpower. Our place in this team has boosted our science networking, access to talent, shared infrastructure and UK science policy impact. The economy of scale streamlines bureaucracy and brings huge added value for all. International collaborations have 40% more impact than domestic-only research.
Strong science is key for our economy and quality of life. It creates a virtuous cycle, leveraging investment from industry, raising productivity and creating high-value jobs for our future. In fact, 20% of UK jobs currently rely on some science knowledge. Science brings better medicines, cleaner energy, public health protections, a safer environment, new technologies and solutions to global challenges.
If we leave the EU, the UK will lose its driving seat in this world-leading team. Free-flow of talent and easy collaboration would likely be replaced by uncertainty, capital flight, market barriers and costly domestic red-tape. This would stifle our science, innovation and jobs.
It is no surprise that a recent survey showed 93% of research scientists and engineers saying the EU is a “major benefit” to UK research. The surprise is that many voters are still unaware that UK science and its benefits would be demoted by a vote to leave.
We, the undersigned, urge you to seriously consider the implications for UK science when you vote in the referendum on UK membership of the EU.
Categories: Offsite Blogs

Philip Wadler: A week of cycling ideas from Copenhagen

Planet Haskell - Tue, 06/14/2016 - 8:26am

People for Bikes is visiting Copenhagen to learn about its famous cycling infrastructure. A week of stories is archived here, including The Great Copenhagen Loading Zone Compromise and How bikes make Copenhagen's neighbourhood business districts thrive.

Categories: Offsite Blogs

CUFP 2016 Call For Tutorials

haskell-cafe - Tue, 06/14/2016 - 7:50am
Hi all, The Commercial Users of Functional Programming (CUFP) 2016 has its Call for Tutorials open for submission. CUFP 2016 is being held in the historic city of Nara, Japan. The conference is devoted to showcase the state of the art of Functional Programming on industrial settings. This conference is co-located with the International Conference of Functional Programming (ICFP). We're looking for tutors that would like to host workshops on on the following themes: - Introductions to functional programming languages. In the past we have had sessions of Clojure, Erlang, F#, F*, Haskell, ML, OCaml, Scala, Scheme and others. - Advanced programming languages, concepts and applications (e.g. Lens, Liquid-Haskell, Agda, Idris, etc.) - Applying functional programming in particular areas, including Web, high-performance computing, finance. - Tools and techniques supporting state of the art functional programming. In the past we have had tutorials on QuickCheck, Elm and others. - Theory. Type theory, categor
Categories: Offsite Discussion

LOPSTR'16: Final Call for Papers and *Deadline Extension*

General haskell list - Mon, 06/13/2016 - 9:24pm
[ Please distribute, apologies for multiple postings. ] ====================================================================== LOPSTR 2016: Final Call for Papers / Deadline Extension ====================================================================== 26th International Symposium on Logic-Based Program Synthesis and Transformation LOPSTR 2016 Edinburgh, UK, September 6-8, 2016 (co-located with PPDP 2016 and SAS 2016) ====================================================================== NEW DEADLINES: Abstract submission (extended): June 20, 2016 Paper/Extended abstract submission (extended): June 27, 2016 ====================================================================== INVITED SPEAKERS: Francesco Logozzo (Facebook, USA) [jointly with PPDP] Greg Morrisett (Cornell University, USA) [jointly with PPDP] Martin Vec
Categories: Incoming News

Two Lectureships (Assistant Professorships) at St Andrews

General haskell list - Mon, 06/13/2016 - 10:09am
We have two vacancies at St Andrews. These are fixed term (3 years), but we are likely to have permanent positions in time. We are looking for good researchers. I would welcome applications from the functional programming community. The deadline is June 29th. See: for details. Best Wishes, Kevin PS If you are sending mail to kh< at >, you may get a bounce message. I should still have received your email despite the error message. For future mail, the best and most reliable email address to use is kevin< at > -please update your address book. -------- Kevin Hammond, Professor of Computer Science, University of St Andrews T: +44-1334 463241 F: +44-1334-463278 W: In accordance with University policy on electronic mail, this email reflects the opinions of the individual concerned, may contain confidential or copyright information that sho
Categories: Incoming News

CMM-to-ASM: Register allocation wierdness

glasgow-user - Sun, 06/12/2016 - 7:38pm
Hi, I am implementing unicode normalization in Haskell. I challenged myself to match the performance with the best C/C++ implementation, the best being the ICU library. I am almost there, beating it in one of the benchmarks and within 30% for others. I am out of all application level tricks that I could think of and now need help from the compiler. I started with a bare minimum loop and adding functionality incrementally watching where the performance trips. At one point I saw that adding just one 'if' condition reduced the performance by half. I looked at what's going on at the assembly level. Here is a github gist of the assembly instructions executed in the fast path of the loop, corresponding cmm snippets and also the full cmm corresponding to the loop: I have annotated the assembly code with labels matching the corresponding CMM. With the addition of another "if" condition the loop which was pretty simple till now suddenly got
Categories: Offsite Discussion

[ANN] aivika-lattice-0.1

haskell-cafe - Sun, 06/12/2016 - 2:35pm
Hi Cafe, I’m glad to introduce a complete new module aivika-lattice [1] for the Aivika simulation library. It allows running nested discrete event simulations within lattice. If the naive approach implies that traversing the nested simulation nodes has an exponential complexity, then the lattice approach gives us a quadratical growth. This is a key feature, which makes the traversing a computationally feasible task even for a large size lattice. It can be useful for financial modeling, for instance. The model can be divided into two different parts. The first part is a discrete event simulation that branches in the lattice nodes. Within this simulation, we can update a mutable reference that can be observed in another part of the model. For example, such a reference can store a value of the modeled interest rate, or stock price, or exchange rate. It is important that the first part is forward traversing, when the time increases from the past to the future. The first part can even include discontinuous p
Categories: Offsite Discussion

Philip Wadler: David Turner Festschrift

Planet Haskell - Sun, 06/12/2016 - 1:12pm

Your chance to submit to a Festschrift for David Turner.
Categories: Offsite Blogs

Philip Wadler: A busy summer

Planet Haskell - Sun, 06/12/2016 - 11:59am
I'll be speaking at the following events.
Hope to see you at one of these!
Categories: Offsite Blogs

left to right pipeline of functions

haskell-cafe - Sun, 06/12/2016 - 6:46am
Hi, I am learning about monads, and this question came to mind: is there a way to have a sequence of functions left to right like so: g = return 2 >>= \n -> return (n + 1) >>= \n -> return (n + 3) Either: some kind of generic monad that makes this legal, or some way to do this without monad (i.e., without the "returns").
Categories: Offsite Discussion

Allow extra commas in module declarations or lists?

glasgow-user - Sat, 06/11/2016 - 8:12pm
Some languages like Perl allow you to include additional commas in your lists, so that you can freely reorder them without worrying about adding or removing commas from the last or first item: my < at >array = ( 1, 2, 3, ); Perl even allows multiple redundant commas everywhere after the first element, which is less useful but has come up on occasion: my < at >array = (1,,,2,,,,,,,,,3,,,,,); I propose allowing an optional single extra comma at the end in module declarations, record declarations, record constructors, and list constructors: module Example ( module Example, SomeConstructor(..), ) where data SomeConstructor = SomeConstructor { foo :: Int, bar :: Int, } baz :: SomeConstructor -> SomeConstructor baz x = x { foo = 5, bar = 10, } qux :: [ Int ] qux = [ 1, 2, 3, ] What do you think? _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users< at >
Categories: Offsite Discussion


General haskell list - Sat, 06/11/2016 - 2:56pm
=================================================== Call-For-Papers: 19th ACM/IEEE MSWiM 2016 Malta, Nov 13-17, 2016 ==================================================== IMPORTANT: Submission deadline Extended: Paper registration through EDAS: June 12th, 2016 Paper Submission: June 12th, 2016 =================================================== ------ ACM/IEEE* MSWiM 2016 is the 19th Annual International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems. MSWiM is an international forum dedicated to in-depth discussion of Wireless and Mobile systems, networks, algorithms and applications, with an emphasis on rigorous performance evaluation. MSWiM is a highly selective conference with a long track record of publishing innovative ideas and breakthroughs. MSWiM 2016 will be held Malta, Nov 13-17, 2016 Authors are encouraged to submit full papers presenting new research related to the theory or pra
Categories: Incoming News

Neil Mitchell: js-jquery 3.0.0 now out

Planet Haskell - Sat, 06/11/2016 - 9:08am

The js-jquery Haskell library bundles the minified jQuery Javascript code into a Haskell package, so it can be depended upon by Cabal packages and incorporated into generated HTML pages. It does so in a way that doesn't require each Haskell package to bundle its own extra data files, and in a way that meets the licensing requirements of distributions such as Debian.

I've just released version 3.0.0, following on from jQuery 3.0.0 a few days ago. This release breaks compatibility with IE6-8, so if that's important to you, insert an upper bound on the package.

Categories: Offsite Blogs

Call pattern specialization limit messages

haskell-cafe - Sat, 06/11/2016 - 4:32am
When I compile Data.Sequence with -dppr-debug, I get several messages about constructor specialization exceeding the call pattern limit. Things like SpecConstr Function ‘$j_ssfy{v} [lid]’ has four call patterns, but the limit is 3 Use -fspec-constr-count=n to set the bound Specialisations: [([sc_sAZr{v} [lid]], [sc_sAZr{v} [lid], lvl_sdmH{v} [lid]]), ([sc_sAZs{v} [lid]], [sc_sAZs{v} [lid], lvl_sw9X{v} [lid]]), ([sc_sAZt{v} [lid]], [sc_sAZt{v} [lid], lvl_swa0{v} [lid]]), ([sc_sAZu{v} [lid]], [sc_sAZu{v} [lid], lvl_swat{v} [lid]])] How can I figure out what function this sort of thing is actually talking about? I'd love to see what benchmarks say about whether tweaking -fspec-constr-count is a good idea, but I don't know what to benchmark. Thanks, David _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe< at >
Categories: Offsite Discussion

All-fail case in asum

haskell-cafe - Fri, 06/10/2016 - 3:37pm
Hello I want to define some parser such way: myParser = tryA <|> tryB <|> fail "input must be either A or B" It works. But then I want to rewrite it with asum: myParser = asum [tryA, tryB, fail "must be A or B"] It works, but the wrong way. Instead of my error it writes "empty". Just "empty". It is so because in base library asum = foldr (<|>) empty What if it was defined asum [] = empty asum [x:xs] = x <|> asum xs It would help me with my parser. But what can this break? Why isn't this done yet?
Categories: Offsite Discussion

GHC 8 + ImpredictiveTypes + $

haskell-cafe - Fri, 06/10/2016 - 9:59am
Hi, I have had a number of trivial compilation failures in many of my projects that contain instances for MonadBaseControl (from monad-control) since upgrading to GHC 8. Now, I say 'trivial' since the actual fix is incredibly minor - a change of compose (.) to apply ($). What was less trivial was the (additional) hair loss arriving at the fix. I've put together a minimal example that demonstrates both the failing (pre-GHC8) and the fixed (GHC8) instances here: Since I found the error message somewhat directionless, I'd like some help actually understanding the root cause and why the 'fix' works: * I assume previously GHC did not fully check type aliases that were impredictive prior to GHC 8? * What does this imply for a type alias such as for the alias RunInBase used in monad-control that contains RankNTypes: - Is such an alias not
Categories: Offsite Discussion

Philip Wadler: Papers We Love: John Reynolds, Definitional Interpreters for Higher-Order Programming Languages

Planet Haskell - Fri, 06/10/2016 - 5:14am

I've added online links to the relevant papers (not behind paywalls), copied here.
Papers we love: John Reynolds, Definitional Interpreters for Higher-Order Programming Languages7 June 2016, Skills Matter, London.
Certain papers change your life. McCarthy's 'Recursive Functions of Symbolic Expressions and their Computation by Machine (Part I)' (1960) changed mine, and so did Landin's 'The Next 700 Programming Languages' (1966). And I remember the moment, halfway through my graduate career, when Guy Steele handed me Reynolds's 'Definitional Interpreters for Higher-Order Programming Languages' (1972).
It is now common to explicate the structure of a programming language by presenting an interpreter for that language. If the language interpreted is the same as the language doing the interpreting, the interpreter is called meta-circular.
Interpreters may be written at differing levels of detail, to explicate different implementation strategies. For instance, the interpreter may be written in a continuation-passing style; or some of the higher-order functions may be represented explicitly using data-structures, via defunctionalisation.
More elaborate interpreters may be derived from simpler versions, thus providing a methodology for discovering an implementation strategy and showing it correct. Each of these techniques has become a mainstay of the study of programming languages, and all of them were introduced in this single paper by Reynolds.
Related material
Categories: Offsite Blogs

couldn't match expected type ByteString with actual type IO ByteString

haskell-cafe - Thu, 06/09/2016 - 1:07pm
Hello All, I'm getting the following error: /apps/workspace/hade/src/Step/ReadExcel.hs:39:23: Couldn't match expected type ‘L.ByteString’ with actual type ‘IO L.ByteString’ In the first argument of ‘IBuf’, namely ‘j’ In the second argument of ‘sendChan’, namely ‘(IBuf j)’ when I compile the following code: data Buf = IChan (SendPort Buf) | IBuf (L.ByteString) deriving (Show,Generic,Typeable) instance Binary Buf readExcel :: Process() readExcel = do sendChan chan (IBuf j) where IChan chan = expect j = do r <- toTableRowsFromFile 8 "final-project.xlsx" let b = A.encode r return b remotable ['readExcel] Any ideas as to what I'm doing wrong? Carl _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe< at >
Categories: Offsite Discussion

FHPC'16 - reminder, and deadline extension

General haskell list - Thu, 06/09/2016 - 12:54pm
Dear colleagues, Following several requests for an extension, the submission deadline for FHPC'16 has been extended by 5 days to 15th June. ====================================================================== CALL FOR PAPERS FHPC 2016 The 5th ACM SIGPLAN Workshop on Functional High-Performance Computing Nara, Japan September 22, 2016 Co-located with the International Conference on Functional Programming (ICFP 2016) Submission Deadline: Wednesday, 15 June, 2016 (anywhere on earth) ====================================================================== The FHPC workshop aims at bringing together researchers exploring uses of functional (or more generally, declarative or high-level) programming technology in application domains where high performance is essential. The aim of the meeting is to
Categories: Incoming News

FHPC'16 - deadline extension to 14th June

haskell-cafe - Thu, 06/09/2016 - 10:14am
Dear colleagues, Following several requests for an extension, the submission deadline for FHPC'16 has been extended by 5 days to 15th June. ====================================================================== CALL FOR PAPERS FHPC 2016 The 5th ACM SIGPLAN Workshop on Functional High-Performance Computing Nara, Japan September 22, 2016 Co-located with the International Conference on Functional Programming (ICFP 2016) Submission Deadline: Wednesday, 15 June, 2016 (anywhere on earth) ====================================================================== The FHPC workshop aims at bringing together researchers exploring uses of functional (or more generally, declarative or high-level) programming technology in application domains where high performance is essential. The aim of the meeti
Categories: Offsite Discussion