Hello
Here is the latest Caml Weekly News, for the week of April 02 to 09, 2013.
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2013-04/msg00026.html
Deep in this thread, Anil Madhavapeddy said among other things:Let me sample some of the videos from the CUFP website (at http://cufp.org/videos) * Scala at Twitter http://cufp.org/videos/scaling-scala-twitter-marius-eriksen-twitter * Facebook Chat in Erlang http://cufp.org/videos/functional-programming-facebook * Freebase and Metaweb in OCaml (now part of Google) http://cufp.org/videos/functional-programming-freebase-warren-harris-metaweb * Scheme for games development in Uncharted 3 http://cufp.org/videos/functional-mzscheme-dsls-game-development * F# at Microsoft for biological computing http://cufp.org/videos/using-f-prove-stabilisation-biological-networks http://cufp.org/videos/f-embracing-functional-programming-visual-studio-2010-luke-hoban-mic * Big data at Nokia using Erlang/OCaml: http://cufp.org/videos/disco-using-erlang-implement-mapreduce And I haven't even mentioned our usual friends from Citrix or Jane Street: * http://cufp.org/videos/citrix-haskell-xenclient * http://cufp.org/videos/jane-street-status-report And many more, of varying size and impact: there's been an interesting evolution from the 'bedroom FP user' to large companies that use it without blinking an eye. All of this has been tracked by CUFP over the years, although we unfortunately don't have videos from the earliest ones.
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2013-04/msg00049.html
Lukasz Stafiniak replied to this very old thread:> Some years ago I was looking for adequate language for one open-source > project to be done in free time and although I took a look at OCaml, > somehow, I didn't like syntax and went playing with Haskell. > > Never really grokked monads and had feeling that despite nice syntax, > some things are more complicated for pragmatic programming than they > should be. [shameless plug] If you'd like to revisit monads and learn other cool stuff, have a look at "Functional programming in OCaml" http://www.ii.uni.wroc.pl/~lukstafi/pmwiki/index.php?n=Functional.Functional
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2013-04/msg00053.html
Albert Cohen announced:The PARKAS team at INRIA and École Normale Supérieure in Paris is looking for an engineer or a postdoctoral researcher. http://www.di.ens.fr/ParkasTeam.html This is a 2 to 3 years position, offered in the context of the FSF project of the IRT SystemX laboratory, to work on a functional, synchronous language for the design and implementation of multicore embedded controllers. The position starts on May 15th and is based primarily in Saclay (NanoInnov building, CEA), with the likely option to relocate at the INRIA offices in Paris if preferable. The unique configuration of the SystemX laboratory enables the effective collaboration of academic and industry researchers and engineers. Direct collaboration and transfer with Alstom Transport and Esterel Technologies is expected in this context. The work will include the development of a compiler for a variant of the Lustre language, building on existing components in OCaml, as well as runtime system components for safety-critical and real-time execution environments. Please contact me as soon as possible if you are interested. More information will be provided upon request. Feel free to forward this offer to people you know who might be interested.
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2013-04/msg00058.html
Stefan Holdermans announced:Vector Fabrics is hiring: we are looking for a top-notch programmer to extend our program-analysis and parallelization products. You design and implement algorithms to assist the programmer to create a parallel design from a sequential C or C++ program. You work with our international team of world-class computer scientists and experts in the Haskell / OCaml functional programming languages. Your work is at the forefront of technology, giving you the opportunity to publish your work in major conferences and directly cooperate with processor design companies and domain-specific application vendors. As we are a startup company, you will quickly have a major impact on our products and get to know all aspects of product creation. You will be part of a strongly committed development team and contribute to our agile development process and automated test suites. Interested? Send your CV, GitHub account or other proof of what you can do to jobs AT vectorfabrics.com. RESPONSIBILITIES * Design and implement software optimization (e.g. parallelization) algorithms for CPUs and GPUs; * Thoroughly test your code, create automated test suites; * Contribute to our agile development planning and process; * Analyze complex customer applications for optimization opportunities and translate this to new analysis algorithms. PROFILE * Your friends and colleagues describe you as a "rockstar" programmer; your programming ability is way above average; * Demonstrable experience in design and implementation of complex software applications; prior experience in functional programming languages is preferred; * You continuously surprise us with your creative yet pragmatic solutions for complex software problems; * You are strongly committed to deliver working software as early as possible; * You work against very high quality standards. Refactoring is your bread and butter, pair-programming is how you prefer to review your code; * Whatever technologies, languages, or development environments you've been using, we expect you have mastered them in depth, and we expect that you will be able to master any technology, language, or development environment that we need in the future; * You are not afraid to get your hands dirty on low-level code, hijack a malloc() call in the standard C library, port the latest gdb debugger to Android on a jail-broken tablet? You get it done. * Excellent command of written and spoken English. EDUCATION MSc, MEng or PhD in Computer Science or significant relevant experience. ABOUT VECTOR FABRICS Vector Fabrics is a high-tech software company, developing tools for embedded multicore programming. Its technology and expertise is getting widespread recognition in the industry as being innovative and unique in their ability to address heterogeneous multicore application-specific silicon platforms. Due to the advanced nature of its tools, Vector Fabrics operates at the forefront of the next generation of embedded platforms for diverse markets ranging from supercomputers to automotive to cell phones. Vector Fabrics puts absolute priority on hiring top class individuals in key positions. Vector Fabrics’ team profile is exceptional and its ambition is to hire only individuals that match or surpass that profile. The company pays top salary and offers a challenging, engaging and stimulating work environment with a high degree of responsibility.
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2013-04/msg00060.html
Tom Ridge announced:I'm pleased to announce the first release of the P3 combinator parser library, and parser generator. It is essentially a synthesis of Earley parsing with combinator parsing. The url is: http://www.tom-ridge.com/p3.html The main features are: * handles all context free grammars * fast (when memoized) * correct (hopefully) * simple (depending on your viewpoint) * scannerless (probably not a good idea - a separate lexing phase can result in much faster overall performance - but makes everything much simpler) * parsers implemented via combinators can be integrated easily with the core language (OCaml in this case), allowing full use of host language features eg modules etc I'm sure there is much scope for improvement, but I thought I would release it now to get feedback.Daniel Bünzli asked and Tom Ridge replied:
> Combinator parsers were an obsession of mine a few years ago. I really > liked the approach but eventually always ended up writing LL(k) > parsers (xmlm, jsonm) by hand which so far has been the only > "technology" that allows me to give the best error > messages/correction, to handle asynchronous IO, and to remain > reasonably efficient. It isn't a fully tooled parser by any stretch of the imagination! Sorry. > Could you maybe comment on these points: > * What's the error handling strategy ? Is there support for error correction ? Yes, I need to do something here. At the moment, there is no real handling of errors, and nothing to support error correction (I'm not completely sure what error correction is). > * Is there support for non-blocking parsing (asynchronous IO) ? No. :( It works on strings, which have to be fully loaded in memory. I guess the use case I'm thinking of is a researcher who wants to quickly knock up a parser, without worrying about fiddling around with the grammar, to parse inputs of moderate size, and who doesn't care too much about absolute performance. For large inputs, which must be parsed quickly in absolute terms, I think you have to start putting some restrictions on the grammar (and then you are into using other tools).Daniel Bünzli then said:
> Yes, I need to do something here. At the moment, there is no real > handling of errors, and nothing to support error correction (I'm not > completely sure what error correction is). In hand made parsers you rewind/fast forward your parser state to get it in a state where it may parse sensible things again (e.g. a "toplevel" construct, or the next element in a list-like construct), this can be done for example by closing/ignoring mismatched parentheses etc. Essentially this means discarding part of the input or introducing tokens not present in the input. While this may result in wrong error reports, you always end with a complete (albeit broken from the user's intent) parse tree. The advantage is that in certain cases you can report more than one syntax error during parsing (since this tends to result in cascading errors you usually set an upper error reporting bound). With the combinator approach, see for example [1,2] (I don't know if there were further developments in that area, these were the papers I was reading at the time). Best, Daniel [1] Swierstra, S.D. (2001). Combinator Parsers: From Toys to Tools. In G. Hutton (Ed.), Electronic Notes in Theoretical Computer Science. Elsevier Science Publishers. [2] Hughes, R.J.M. & Swierstra, S.D. (2003). Polish Parsers, Step by Step. In Eighth ACM Sigplan International Conference on Functional Programming (pp. 239-248). New York: ACM Press.
Thanks to Alp Mestan, we now include in the Caml Weekly News the links to the recent posts from the ocamlcore planet blog at http://planet.ocaml.org/. OCaml on a Nexus 7: http://gallium.inria.fr/blog/ocaml-on-a-nexus-7 Sekred a password helper for puppet.: http://le-gall.net/sylvain+violaine/blog/index.php?post/2013/04/01/Sekred-a-password-helper-for-puppet. Hackerschool tutorial at Jane Street: https://ocaml.janestreet.com/?q=node/113 ocaml-extunix 0.0.6 released: https://forge.ocamlcore.org/forum/forum.php?forum_id=872
If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a look at the archive or the RSS feed of the archives.
If you also wish to receive it every week by mail, you may subscribe online.