News aggregator

Jasper Van der Jeugt: Cryptographic Hashes and Cyclic Dependencies

Planet Haskell - Fri, 06/03/2016 - 6:00pm

I recently wrote a blog entry on the Fugue blog, about the problems that arise when you want to compute cryptographic hashes of resources that can have dependency cycles. You can read it here. Thanks to Jared Tobin, Maciej Woś and Racquel Yerbury for proofreading and editing.

Categories: Offsite Blogs

10 open roles in expanding team at Standard Chartered

haskell-cafe - Fri, 06/03/2016 - 1:14pm
I have another ten open roles in the growing Strats team at Standard Chartered. https://donsbot.wordpress.com/2016/06/03/multiple-haskell-developer-roles-in-strats-at-standard-chartered/ These are full time or contract Haskell developer positions in London or Singapore. Details in the post . _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe< at >haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Categories: Offsite Discussion

PPPJ 2016, Submission Deadline Extended to June 13 AoE

General haskell list - Fri, 06/03/2016 - 9:49am
******** Due to several requests, the paper submission deadline has been extended to ******** June 13, 2016 AoE (Anywhere on Earth). ******** ******** Registering paper title and abstract before the submission deadline is ******** optional but encouraged. =============================================== PPPJ '16 13th International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools August 29 - September 2, 2016 Lugano, Switzerland http://manlang16.inf.usi.ch/pppj In-cooperation with ACM SIGPLAN, SIGSOFT, SIGAPP and SPEC RG PPPJ '16 is a forum for researchers and practitioners to present and discuss novel results on all aspects of managed languages and their runtime systems, including virtual machines, tools, methods, frameworks, libraries, case studies, and experience reports. Managed languages and runtime systems of interest include, but are not limited to, Java, Scala, JavaScript, Python, Ruby, C#, F#, Clojure, Groovy
Categories: Incoming News

Don Stewart (dons): Multiple Haskell developer roles in Strats at Standard Chartered

Planet Haskell - Fri, 06/03/2016 - 6:09am

The Strats team at Standard Chartered has another ten open positions for typed functional programming developers, based in London or Singapore. Strats are a specialized software engineering and quantitative analysis team who build a broad range of software for financial markets users at Standard Chartered.

You will work on the trading floor, directly with traders, sales and risk managers, building software to automate their work and improve their efficiency. The focus of this role will be to build new tools for bankwide analytics and server-side derivatives pricing infrastructure.

You will use Haskell for almost all tasks: data analysis, market data publishing, database access, web services, desktop GUIs, large parallel tasks, quantitative models, solvers, everything. This is a fast paced role – code you write today will be deployed within hours to hundreds of users and has to work.

These are permanent, associate director and director positions, in London and Singapore as part of the Strats global team. Demonstrated experience in typed FP (Haskell, OCaml, F# etc) is required. We have around 3 million lines of Haskell, and our own Haskell compiler. In this context we look for skill and taste in typed functional programming to capture and abstract over complex, messy systems. You would join a growing team of around 16 experienced Haskell developers that is expanding to 25+ due to increased business need for Haskell developers.

Experience writing typed APIs to external systems such as databases, web services, pub/sub platforms is very desirable. We like working code, so if you have Hackage or github libraries, we definitely want to see them. We also like StackOverflow answers, blog posts, academic papers, or other arenas where you can show broad FP ability. A PhD or Masters Degree in Computer Science is an advantage but not a requirement.

The role requires physical presence on the trading floor in Singapore or London. Remote work is not an option. You will have some project and client management skills — you will talk to users, understand their problems and then implement and deliver what they really need. No financial background is required. These positions have attractive remuneration for the right candidates. Relocation support will also be provided. Contracting-based positions are also possible if desired.

Applicants who don’t necessarily meet all criteria but have an interest in working in Singapore in particular, and have an FP background, are encouraged to apply.

More info about our development process is in the 2012 PADL keynote, and a 2013 HaskellCast interview.

If this sounds exciting to you, please send your resume to me – donald.stewart <at> sc.com

Categories: Offsite Blogs

International summer school on metaprogramming(Cambridge, 8-12 Aug 2016)

haskell-cafe - Thu, 06/02/2016 - 10:27pm
==================================================================== International summer school on metaprogramming Robinson College, Cambridge, United Kingdom 8th-12th August, 2016 http://www.cl.cam.ac.uk/events/metaprog2016/ ==================================================================== Metaprogramming is an approach to improving programs by treating program fragments (such as expressions or types) as values that the program can manipulate. Metaprogramming comes in various forms, including * staged programming: treating expressions as program values. The execution of a staged program is spread over several phases, with each stage using the available data to generate specialized code. Staged programming has a wide variety of applications — numeric computations, parsing, database queries, generic programming, domain specific languages, and many more. Precompiling the staged code can have dramatic performance improvements, in some cases an order of magnitude or more. * generic
Categories: Offsite Discussion

how to reify an API?

haskell-cafe - Thu, 06/02/2016 - 10:00pm
Dear Cafe, I wanted to benchmark (part of) an API of a package, by enumerating all possible (nested) calls by size of their AST, much as smallcheck does it for data. So I made this straightforward AST representation and (generically) got its Serial instances. That last part has been in smallcheck for a long time, and works nicely. But I do wonder if there is a way to get the AST (and corresponding interpreter) with less boilerplate code (than this: https://github.com/jwaldmann/pretty-test/blob/master/src/Lib.hs#L29 ) If you read the code: it also has a type for "AST contexts" because I wanted to iterate them (to produce larger trees). Again - easy to write down, but boring. - J.
Categories: Offsite Discussion

Summer School on Bidirectional Transformations, Oxford,25-29th July 2016

General haskell list - Thu, 06/02/2016 - 4:52pm
Apologies if you have seen this before, but the early registration deadline (June 10th) is fast approaching for SSBX in Oxford. Please pass this on to anyone who may be interested (and consider coming yourself!). * SUMMER SCHOOL ON BIDIRECTIONAL TRANSFORMATIONS Lady Margaret Hall, Oxford, UK 25th to 29th July 2016 http://www.cs.ox.ac.uk/projects/tlcbx/ssbx/ TOPIC Bidirectional transformations (BX) are means of maintaining consistency between multiple information sources: when one source is edited, the others may need updating to restore consistency. BX have applications in databases, user interface design, model-driven development, and many other domains. This summer school is one of the closing activities on the "Theory of Least Change for BX" project at Oxford and Edinburgh (http://www.cs.ox.ac.uk/projects/tlcbx/). It brings together leading researchers in BX, spanning theory and practice, for a week of lectures in beautiful Oxford. It will be aimed at doctoral students in computer science, but wi
Categories: Incoming News

Roman Cheplyaka: Surprising reciprocity

Planet Haskell - Thu, 06/02/2016 - 2:00pm

I have two correlated random variables, \(X\) and \(Y\), with zero mean and equal variance. I tell you that the best way to predict \(Y\) based on the knowledge of \(X\) is \(y = a x\). Now, you tell me, what is the best way to predict \(X\) based on \(Y\)?

Your intuition might tell you that if \(y = ax\), then \(x = y/a\). This is correct most of the time… but not here. The right answer will surprise you.

So what is the best way to predict \(Y\) based on \(X\) and vice versa? Let’s find the \(a\) that minimizes the mean squared error \(E[(Y-aX)^2]\):

\[E[(Y-aX)^2] = E[Y^2-2aXY+a^2X^2]=(1+a^2)\mathrm{Var}(X)-2a\mathrm{Cov}(X,Y);\]

\[\frac{\partial}{\partial a}E[(Y-aX)^2] = 2a\mathrm{Var}(X)-2\mathrm{Cov}(X,Y);\]

\[a=\frac{\mathrm{Cov}(X,Y)}{\mathrm{Var}(X)}=\mathrm{Corr}(X,Y).\]

Notice that the answer, the (Pearson) correlation coefficient, is symmetric w.r.t. \(X\) and \(Y\). Thus it will be the same whether we want to predict \(Y\) based on \(X\) or \(X\) based on \(Y\)!

How to make sense of this? It may help to consider a couple of special cases first.

First, suppose that \(X\) and \(Y\) are perfectly correlated and you’re trying to predict \(Y\) based on \(X\). Since \(X\) is such a good predictor, just use its value as it is (\(a=1\)).

Now, suppose that \(X\) and \(Y\) are uncorrelated. Knowing the value of \(X\) doesn’t tell you anything about the value of \(Y\) (as far as linear relationships go). The best predictor you have for \(Y\) is its mean, \(0\).

Finally, suppose that \(X\) and \(Y\) are somewhat correlated. The correlation coefficient is the degree to which we should trust the value of \(X\) when predicting \(Y\) versus sticking to \(0\) as a conservative estimate.

This is the key idea—to think about \(a\) in \(y=ax\) not as a degree of proportionality, but as a degree of “trust”.

Categories: Offsite Blogs

How to Build Static Checking Systems Using Orders of Magnitude Less Code

Lambda the Ultimate - Thu, 06/02/2016 - 7:44am

How to Build Static Checking Systems Using Orders of Magnitude Less Code, by Fraser Brown Andres Notzli Dawson Engler:

Modern static bug finding tools are complex. They typically consist of hundreds of thousands of lines of code, and most of them are wedded to one language (or even one compiler). This complexity makes the systems hard to understand, hard to debug, and hard to retarget to new languages, thereby dramatically limiting their scope.

This paper reduces the complexity of the checking system by addressing a fundamental assumption, the assumption that checkers must depend on a full-blown language specification and compiler front end. Instead, our program checkers are based on drastically incomplete language grammars (“micro-grammars”) that describe only portions of a language relevant to a checker. As a result, our implementation is tiny—roughly 2500 lines of code, about two orders of magnitude smaller than a typical system. We hope that this dramatic increase in simplicity will allow developers to use more checkers on more systems in more languages.

We implement our approach in µchex, a language-agnostic framework for writing static bug checkers. We use it to build micro-grammar based checkers for six languages (C, the C preprocessor, C++, Java, JavaScript, and Dart) and find over 700 errors in real-world projects.

Looks like an interesting approach with some compelling results, and will make a good tool for the toolbox. See also the Reddit thread for further discussion.

Categories: Offsite Discussion

Christoph Breitkopf: Weigh your Haskell code

Planet Haskell - Thu, 06/02/2016 - 7:44am
Chris Done released the wonderful weigh library to check memory use much like criterion enables you to check speed. His blog post contains a convincing example how looking at the allocations can point you to major speedups, making me eager to check IntervalMap for such problems.
Implementing the first alloc benchmark was straightforward. It took me only a few minutes to produce some comparisons between Data.Set and IntervalSet:
Case Bytes GCs Check Data.Set fromList 1000 440,496 0 OK IntervalSet fromList 1000 2,643,136 1 OK Data.Set fromAscList 989 126,144 0 OK IntervalSet fromAscList 989 224,688 0 OK Data.Set fromDistinctAscList 989 71,816 0 OK IntervalSet fromDistinctAscList 989 163,440 0 OK Data.Set mapMonotonic id 989 39,560 0 OK IntervalSet mapMonotonic id 989 159,520 0 OK This did not look exactly good. My feeling was that IntervalSet should use more memory, but not that much more. Both use node-oriented binary tree data structures. The nodes in IntervalSet have one more field for the interval search information, but that should be at most a 25% difference, not a factor of 4.
The simplest of these functions happens to be mapMonotonic. It just maps a function over the values, keeping the tree structure unchanged. So, when calling it with the id function, we would expect it to allocate one new node per value in the set, and nothing else. Nodes in Data.Set have 4 fields, and should take 40 bytes on a 64-bit machine. So mapMonotonic id on a size 1000 set should allocate 40,000 bytes, plus maybe some padding and a little general overhead. There are 989 unique values in the test data, so the allocation by Data.Set is perfect: 39,560 = 989×40 bytes. IntervalSet nodes have one more field, giving 48 bytes per node, but it allocates about 160,000 instead of the expected 47,472 bytes.
Let's look at the implementation:
mapMonotonic _ Nil = Nil mapMonotonic f (Node c k _ l r) = mNode c (f k) (mapMonotonic f l) (mapMonotonic f r) The mNode function is just the Node constructor augmented with the computation of the interval search information.
In Haskell, one possibility for allocations is Laziness: a computation is stored on the heap (a "thunk") to be done later. This does happen when mapping values over a tree, but both Set and IntervalSet are defined to be spine-strict, which means that the structure of the tree is always fully evaluated. Technically, it means that the node constructor will evaluate the left and right subtree arguments.
The mNode function turned out to be strict in all its arguments, but the interval annotation uses some functions from the Interval typeclass where the compiler can't infer strictness. Adding strictness via bang-patterns gave a small improvement:
Case Original New IntervalSet fromList 1000 2,643,136 2,302,576 IntervalSet fromAscList 989 224,688 205,608 IntervalSet fromDistinctAscList 989 163,440 143,920 IntervalSet mapMonotonic id 989 159,520 142,320 At this point I probably should have looked at the GHC produced core, to see where exactly the allocation happens. But I still decided to do some more code tuning first because I knew about one major case for inefficiency in the node construction even without allocation being necessarily involved. The node construction needs to determine the interval with the largest upper bound from two intervals, and that operation is not directly present in the Interval typeclass. Just comparing the upper bounds is not enough, since one of the intervals could be open and the other closed, in which case equal upper bounds turn out not to be equal after all. So this operation has to be synthesized from upperBound and rightClosed:
compareUpperBounds a b = case compare (upperBound a) (upperBound b) of LT -> LT GT -> GT EQ -> case (rightClosed a, rightClosed b) of (False, True) -> LT (True, False) -> GT _ -> EQ For most actual instances of Interval, the rightClosed function will return a constant value (e.g., rightClosed = const True), so that this function could be simplified to a single compare. But GHC can do this only if knows and can inline the concrete Interval instance used. This requires liberal use of the INLINABLE pragma and can lead to code and compile-time bloat. Data.Set does this to some extent, but I don't think it is feasible for IntervalSet.
So I bit the bullet and added this function and a default implementation to the Interval typeclass. Results:
Case Original New IntervalSet fromList 1000 2,643,136 576,208 IntervalSet fromAscList 989 224,688 110,760 IntervalSet fromDistinctAscList 989 163,440 47,488 IntervalSet mapMonotonic id 989 159,520 47,472 About perfect! I should add that along with the reduction in allocations comes a speed improvement of about 30 - 50% for all operations that manipulate sets. Same for IntervalMaps. Is it worth adding otherwise unneeded functions to the typeclass for that? I think yes. A new version of IntervalMap incorporating these speedups is already up on Hackage.
Categories: Offsite Blogs

LOPSTR 2016: 2nd Call for Papers

General haskell list - Wed, 06/01/2016 - 7:21pm
[ Please distribute, apologies for multiple postings. ] ====================================================================== LOPSTR 2016: 2nd Call for Papers ====================================================================== 26th International Symposium on Logic-Based Program Synthesis and Transformation LOPSTR 2016 http://cliplab.org/Conferences/LOPSTR16/ Edinburgh, UK, September 6-8, 2016 (co-located with PPDP 2016 and SAS 2016) ====================================================================== DEADLINES: Abstract submission: June 7, 2016 Paper/Extended abstract submission: June 14, 2016 ====================================================================== INVITED SPEAKERS: Francesco Logozzo (Facebook, USA) [jointly with PPDP] Greg Morrisett (Cornell University, USA) [jointly with PPDP] Martin Vechev (ETH Zurich, Switzerland) [jointly with SAS ] =====
Categories: Incoming News

Functional Jobs: CTO (Haskell/Clojure) at Capital Match (Full-time)

Planet Haskell - Wed, 06/01/2016 - 4:04am

Overview

Capital Match (www.capital-match.com) is a leading peer-to-peer lending platform in Singapore. Our in-house platform, mostly developed in Haskell, has in the last year seen more than USD 6 million business loans processed with a strong monthly growth (current rate of USD 1-2 million monthly).

We have just secured another funding round to build a world-class technology as the key business differentiator. The key components include credit risk engine, seamless banking integration and end-to-end product automation from loan origination to debt collection.

Responsibilities

We are looking to hire an experienced software engineer (min. 5-8 years coding experience) with a team lead and product management experience to lead the efforts. The current tech team includes a product manager and 3 software engineers. CTO would directly report to CEO and the Board of Directors.

The candidate should have been involved in a development of multiple web-based products from scratch. He should be interested in all aspects of the creation, growth and operations of a secure web-based platform: front-to-back features development, distributed deployment and automation in the cloud, build and test automation etc.

Background in fintech and especially lending space would be a great advantage.

Requirements

Our platform is primarily developed in Haskell with an Om/ClojureScript frontend. We are expecting our candidate to have experience working with a functional programming language e.g. Haskell/Scala/OCaml/F#/Clojure/Lisp/Erlang.

Deployment and production is managed with Docker containers using standard cloud infrastructure so familiarity with Linux systems, command-line environment and cloud-based deployment is mandatory. Minimum exposure to and understanding of XP practices (TDD, CI, Emergent Design, Refactoring, Peer review and programming, Continuous improvement) is expected.

We are looking for candidates that are living in or are willing to relocate to Singapore.

Offer

We offer a combination of salary and equity depending on experience and skills:

Salary: USD 6,000-8,000 / month

Equity: ca. 1% (subject to vesting)

European citizens who relocate to Singapore do not have to pay their home country taxes and the local tax rate in Singapore is more or less 5% (effective on the proposed salary range). Visa sponsorship will be provided.

Singapore is a great place to live, a vibrant city rich with diverse cultures, a very strong financial sector and a central location in Southeast Asia.

Get information on how to apply for this position.

Categories: Offsite Blogs

Functional Jobs: Software Engineer (Haskell/Clojure) at Capital Match (Full-time)

Planet Haskell - Wed, 06/01/2016 - 4:04am

Overview

Capital Match (www.capital-match.com) is a leading peer-to-peer lending platform in Singapore. Our in-house platform, mostly developed in Haskell, has in the last year seen more than USD 6 million business loans processed with a strong monthly growth (current rate of USD 1-2 million monthly).

We have just secured another funding round to build a world-class technology as the key business differentiator. The key components include credit risk engine, seamless banking integration and end-to-end product automation from loan origination to debt collection.

Responsibilities

We are looking to hire a software engineer with a minimum of 2-3 years coding experience. The current tech team includes a product manager and 3 software engineers. We are currently also in the process of hiring CTO.

The candidate should have been involved in a development of multiple web-based products from scratch. He should be interested in all aspects of the creation, growth and operations of a secure web-based platform: front-to-back features development, distributed deployment and automation in the cloud, build and test automation etc.

Background in fintech and especially lending space would be a great advantage.

Requirements

Our platform is primarily developed in Haskell with an Om/ClojureScript frontend. We are expecting our candidate to have experience working with a functional programming language e.g. Haskell/Scala/OCaml/F#/Clojure/Lisp/Erlang.

Deployment and production is managed with Docker containers using standard cloud infrastructure so familiarity with Linux systems, command-line environment and cloud-based deployment is mandatory. Minimum exposure to and understanding of XP practices (TDD, CI, Emergent Design, Refactoring, Peer review and programming, Continuous improvement) is expected.

We are looking for candidates that are living in or are willing to relocate to Singapore.

Offer

We offer a combination of salary and equity depending on experience and skills:

Salary: USD 3,500-5,000 / month

Equity: ca. 0.5% (subject to vesting)

European citizens who relocate to Singapore do not have to pay their home country taxes and the local tax rate in Singapore is more or less 5% (effective on the proposed salary range). Visa sponsorship will be provided.

Singapore is a great place to live, a vibrant city rich with diverse cultures, a very strong financial sector and a central location in Southeast Asia.

Get information on how to apply for this position.

Categories: Offsite Blogs

Douglas M. Auclair (geophf): May 2016 1HaskellADay Problems and Solutions

Planet Haskell - Wed, 06/01/2016 - 2:55am
May 2016
  • May 31st, 2016: Today's #haskell problem gets a subsequence of DNA from ... DNA! http://lpaste.net/1527607897389793280 Today's #haskell solution: DNA subsequence GOT http://lpaste.net/5828328688629841920
  • May 30th, 2016: We find the number of RNA strands that can generate a protein ... modulo reasonableness for today's #haskell problem http://lpaste.net/7114368903530151936 Today's #haskell solution shows us there are 'more than a few' RNA strands to compose some proteins http://lpaste.net/3827843057999413248
  • May 27th, 2016: For today's #haskell problem we sing: No woman, Nah Trie! http://lpaste.net/8137189406290214912 Or: Breath-first Trie Traversal via the branches. We take breathing-lessons for today's #haskell solution http://lpaste.net/2088953736360624128
  • May 26th, 2016: For today's #haskell problem we label the nodes of a Trie ... http://lpaste.net/658981668358455296 or at least we ... TRIE to! *groan Today's #haskell solution is a depth-first traversal of a Triehttp://lpaste.net/7964088321452277760
  • May 25th, 2016: Today's #haskell problem ask you to exercise your probability muscles and look at some allele-pairingshttp://lpaste.net/7098281613896712192 That's all.
  • May 24th, 2016: Reverse Palindromes in DNA strands?Yes. http://lpaste.net/4547532761941934080 Today's #haskell problem. Turns out there are lots of palindromes in DNA strands as today's #haskell solution shows. http://lpaste.net/8959978868165312512 Go figure.
  • May 23rd, 2016: Splice, splice, baby! We get all Vanilla Ice with RNA with today's #haskell problem http://lpaste.net/2811938573572374528 We get our protein when with today's hand-rolled List-y-(\\) #haskell solution http://lpaste.net/5823105188059152384
  • May 20th, 2016: For today's #haskell problem we consider the weighty matter of ... weighing matter http://lpaste.net/7500383126527410176 The weight's the thing Wherein I'll catch the conscience of the King ... no ... weight ...Today's #haskell solution http://lpaste.net/7743348996965400576
  • May 19th, 2016: Today's #haskell problem looks at the Carmina Buranahttp://lpaste.net/684224423812661248 ... uh, no, it doesn't: Open Reading Frames.  Today's #haskell solution sequences DNA strands to proteins http://lpaste.net/792645775074000896
  • May 18th, 2016: If at first you do not succeed, trie and trie again today's #haskell problem http://lpaste.net/8558987235213443072 #trie #datatype 
  • May 17th, 2016: "Houston. We have a problem." #bigdata factors into today's #haskell problem of longest monotonic sequenceshttp://lpaste.net/6778179741435297792
  • May 16th, 2016: Today's #Haskell problem asks for longest monotonic increasing/decreasing sequences ... in the small ... http://lpaste.net/7252474989977272320 So, the #haskell solution works against small data set, but since it's bifurcating, against large data sets? ... http://lpaste.net/7003206401061289984
  • May 13th, 2016: #Rosalind is impatient. She doesn't have all day! Let's find a real-world solution to today's #haskell problem http://lpaste.net/8254705170412208128 Finding the longest common gene subsequence of 100 strands each 1000 nucleotides long in #haskell http://lpaste.net/2468395370904813568 Can you find faster?
  • May 12th, 2016: We propose a little problem from Set Theory for today's #haskell problem http://lpaste.net/4050317579338645504 And we have today's #haskell in-a-perfect-world solution of the set-intersection of all subsequenceshttp://lpaste.net/1682855623517011968
  • May 11th, 2016: Today's #haskell problem is all about the inods ... not 'inodes,' but 'internal nodes of an unrooted binary tree.' http://lpaste.net/7455193258755358720 "inods?" you say? "Of an unrooted binary tree?" you say? That would be pred . pred for today's #haskell solution http://lpaste.net/4766815087493120000
  • May 10th, 2016: For today's #haskell problem we take it to the next level, see? and get variable-length strings as enumerated tokens http://lpaste.net/3180555571975684096 We pulled the powerSet Set.fromList Set.toList switcheroo for today's #haskell solution. http://lpaste.net/7501776843414962176
  • May 9th, 2016: For today's #haskell problem we sing our A, B, Cs ... #Rosalind-style! http://lpaste.net/1445499963915108352 Today's #Haskell solution enumerates lexed tokens http://lpaste.net/503582828101894144
  • May 6th, 2016: For today's #haskell problem we ask #Rosalind and she says 'Permutations.' So that's what we do! http://lpaste.net/6558920694606856192 This is the dawning of the age of Aquarius! "Hair" a movie about perms for today's #haskell solution http://lpaste.net/934285743432400896 @NickiElson3D 
  • May 5th, 2016: Today's #haskell problem: p-distance Matriceshttp://lpaste.net/818771459840147456 Believe you me: you will get a LOT of continued employment with these Today's #haskell solution is filed under #jobsecurity http://lpaste.net/5076187573303377920 #distanceMatrix
  • May 4th, 2016: Today's #haskell problem we look at completing a graph into the Tree of Life http://lpaste.net/1315899789614776320 #Rosalind Today's #haskell solution is graph-y, or also take the approach of @bazzargh http://lpaste.net/1052721051462533120
  • May 3rd, 2016: Today's #haskell problem looks at overlapping graphs, specifically for DNA strands from rosalind.info http://lpaste.net/8920617631791185920 Did you know a list is a graph? Today's #haskell solution was an elaboration of `isSuffixOf` http://lpaste.net/5785600391169179648 #Rosalind 
  • May 2nd, 2016: For today's #haskell problem we look at transforming our data into d3: "Data-driven document"-JSONhttp://lpaste.net/224067301371019264 For the #haskell solution we get a bird's-eye view of the Top5s stocks http://lpaste.net/7060337987313205248 
Categories: Offsite Blogs

ANN: Haskell for Mac trials & educational discount

General haskell list - Wed, 06/01/2016 - 1:51am
Haskell for Mac, the Haskell IDE with interactive playgrounds, now offers a free 14 day trial and educational discounts: http://haskellformac.com Manuel
Categories: Incoming News

SIGPLAN Programming Languages Mentoring Workshop < at >ICFP

haskell-cafe - Tue, 05/31/2016 - 11:02pm
SIGPLAN Programming Languages Mentoring Workshop < at > ICFP Nara, Japan (co-located with ICFP 2016) Sunday, September 18th, 2016 http://conf.researchr.org/track/icfp-2016/PLMW-ICFP-2016/ We are pleased to invite students interested in functional programming research to the programming languages mentoring workshop at ICFP. The goal of this workshop is to introduce senior undergraduate and early graduate students to research topics in functional programming as well as provide career mentoring advice. We have recruited leaders from the functional programming community to provide overviews of current research topics and give students valuable advice about how to thrive in graduate school, search for a job, and cultivate habits and skills that will help them in research careers. This workshop is part of the activities surrounding ICFP, the International Conference on Functional Programming, and takes place the day before the main conference. One goal of the workshop is to make the ICFP conference more accessible t
Categories: Offsite Discussion

SIGPLAN Programming Languages Mentoring Workshop < at > ICFP

General haskell list - Tue, 05/31/2016 - 11:02pm
SIGPLAN Programming Languages Mentoring Workshop < at > ICFP Nara, Japan (co-located with ICFP 2016) Sunday, September 18th, 2016 http://conf.researchr.org/track/icfp-2016/PLMW-ICFP-2016/ We are pleased to invite students interested in functional programming research to the programming languages mentoring workshop at ICFP. The goal of this workshop is to introduce senior undergraduate and early graduate students to research topics in functional programming as well as provide career mentoring advice. We have recruited leaders from the functional programming community to provide overviews of current research topics and give students valuable advice about how to thrive in graduate school, search for a job, and cultivate habits and skills that will help them in research careers. This workshop is part of the activities surrounding ICFP, the International Conference on Functional Programming, and takes place the day before the main conference. One goal of the workshop is to make the ICFP conference more accessible t
Categories: Incoming News

Jan Stolarek: Installing OCaml under openSUSE 11.4, or: “the compilation of conf-ncurses failed”

Planet Haskell - Tue, 05/31/2016 - 6:29am

Recently I decided to learn the basics of OCaml and I spent yesterday installing the compiler and some basic tools. On my machine at work I have a Debian 7 installation, while on my home laptop I have openSUSE 11.4. Both systems are quite dated and ship with OCaml 3.x compiler, which is five years old. Obviously, I wanted to have the latest version of the language. I could have compiled OCaml from sources – and in fact I have done that in the past to compile the latest version of Coq – but luckily there is a tool called OPAM (OCaml Package manager). OPAM can be used to easily download and install desired version of OCaml compiler. As the name implies, OPAM can be also used for managing packages installed for a particular compiler version.

The installation process went very smooth on my Debian machine, but on openSUSE I have run into problems. After getting the latest compiler I wanted to install ocamlfind, a tool required by a project I wanted to play with. To my disappointment installation ended with an error:

[ERROR] The compilation of conf-ncurses failed at "pkg-config ncurses".   This package relies on external (system) dependencies that may be missing. `opam depext conf-ncurses.1' may help you find the correct installation for your system.

I verified that I indeed have installed development files for the ncurses library as well as the pkg-config tool. Running the suggested opam command also didn’t find any missing dependencies, and the log files from the installation turned out to be completely empty, so I was left clueless. Googling revealed that I am not the first to encounter this problem, but offered no solution. I did some more reading on pkg-config and learned that: a) it is a tool that provides meta-information about installed libraries, and b) in order to recognize that a library is installed it requires extra configuration files (aka *.pc files) provided by the library. Running pkg-config --list-all revealed that ncurses is not recognized as installed on my system, which suggested that the relevant *.pc files are missing. Some more googling revealed that ncurses library can be configured and then compiled with --enable-pc-files switch, which should build the files needed by pkg-config. I got the sources for the ncurses version installed on my system (5.7) only to learn that this build option is unsupported. This explains why the files are missing on my system. I got the sources for the latest version of ncurses (6.0), configured them with --enable-pc-files and compiled, only to learn that the *.pc files were not built. After several minutes of debugging I realized that for some unexplained reasons the configure-generated script which should build the *.pc files (located at misc/gen-pkgconfig) did not receive +x (executable) permission. After adding this permission manually I ran the script and got five *.pc files for the ncurses 6.0 library. Then I had to edit the files to match the version of ncurses of my system – relevant information can be obtained by running ncurses5-config --version. The only remaining thing was to place the five *.pc files in a place where pkg-config can find them. On openSUSE this was /usr/local/pkgconfig, but this can differ between various Linux flavours.

After all these magical incantations the installation of ocamlfind went through fine and I can enjoy a working OCaml installation on both of my machines. Now I’m waiting for the “Real-world OCaml” book ordered from Amazon (orders shipped from UK Amazon to Poland tend to take around two weeks to arrive).

Categories: Offsite Blogs

2nd Call for Papers: WFLP 2016 - Update: EPTCS Proceedings

General haskell list - Mon, 05/30/2016 - 5:19pm
24th International Workshop on Functional and (Constraint) Logic Programming (WFLP 2016) https://wflp2016.github.io/ September 13-14, part of the Leipzig Week of Declarative Programming (L-DEC 2016) *********************************************************** Deadlines: * abstract submission: June 15, 2016 * paper submission: June 22, 2016 * notification: July 15, 2016 * camera-ready (workshop) version due: August 10, 2016 Papers can be directly accepted for publication in the formal EPTCS proceedings, or accepted for presentation at the workshop and invited to another round of reviewing after revision. More details on the web page. *********************************************************** The international workshops on functional and (constraint) logic programming aim at bringing together researchers, students, and practitioners interested in functional programming, logic programming, and their integration. This year the workshop is co-located with two other events as part of http://nfa.imn.htwk-le
Categories: Incoming News

DEADLINE EXTENSION: 19th ACM/IEEE MSWiM 2016 - Malta,Nov 13-17, 2016

General haskell list - Mon, 05/30/2016 - 4:05pm
=================================================== Call-For-Papers: 19th ACM/IEEE MSWiM 2016 Malta, Nov 13-17, 2016 http://www.mswimconf.com/2016 ==================================================== IMPORTANT: Submission deadline Extended: Paper registration through EDAS: June 8th, 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 prac
Categories: Incoming News