[Haskell-cafe] ICFP 2012: Call for participation
= Call for Participation The 17th ACM SIGPLAN International Conference on Functional Programming (ICFP 2012) and affiliated events http://www.icfpconference.org/icfp2012/ Copenhagen, Denmark, Sep 9-15, 2012 = ICFP provides a forum for researchers and developers to hear about the latest work on the design, implementations, principles, and uses of functional programming. The conference covers the entire spectrum of work, from practice to theory, including its peripheries. A full week dedicated to functional programming: 1 conference, 1 symposium, 9 workshops, 8 tutorials, programming contest results, student research contest * Accepted Papers: http://www.icfpconference.org/icfp2012/accepted.html * Local arrangements (including travel and accommodation): http://icfpconference.org/icfp2012/local.html Conference hotel reservation cutoff: July 9, 2012 * Registration is available via: http://icfpconference.org/icfp2012/ Electronic registration will open shortly. * Follow @icfp_conference on twitter for the latest news: http://twitter.com/#!/icfp_conference There are several events affiliated with ICFP: September 9 Workshop on Cross-paradigm Language Design and Implementation Workshop on Generic Programming Workshop on Higher-Order Programming with Effects Workshop on Logical Frameworks and Meta-languages: Theory and Practice September 10-12 ICFP - main conference September 13 Commercial Users of Functional Programming – Day 1 (CUFP Tutorials) Haskell Symposium Workshop on ML September 14 Commercial Users of Functional Programming – Day 2 (CUFP Tutorials) Erlang Workshop Haskell Implementors' Workshop OCaml Users and Developers Workshop September 15 Commercial Users of Functional Programming – Day 3 (CUFP Talks) Workshop on Functional High-Performance Computing Tutorial on Compiler Construction in Haskell Tutorial on the Grammatical Framework Conference organizers: * General Chair: Peter Thiemann, University of Freiburg * Program Chair: Robby Findler, Northwestern University * Local Arrangements Chair: Fritz Henglein, University of Copenhagen * Industrial Relations Chair: Andy Adams-Moran, Galois * Workshop Co-Chairs: Patrik Jansson, Chalmers University of Technology Gabriele Keller, University of New South Wales * Programming Contest Chair: Edwin Brady, University of St. Andrews Kevin Hammond, University of St. Andrews * Publicity Chair: Wouter Swierstra, Utrecht University * Video Chair: Malcolm Wallace, Standard Chartered Bank * Student Research Competition Chair: Doaitse Swierstra, Utrecht University = ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ICFP Student Research Competition
= Student Research Competition Associated with the The 17th ACM SIGPLAN International Conference on Functional Programming (ICFP 2012) and affiliated events http://www.icfpconference.org/icfp2012/src.html Copenhagen, Denmark, Sep 9-15, 2012 = This year ICFP will host a Student Research Competition where undergraduate and postgraduate students can present posters. The SRC at the ICFP 2012 consists of three rounds: - Extended abstract round: All students are encouraged to submit an extended abstract outlining their research (800 words). - Poster session at ICFP 2012: Based on the abstracts, a panel of judges will select the most promising entrants to participate in the poster session which will take place at ICFP. Students who make it to this round will be supported to attend the conference, to a maximum of $500 for travel and housing. If your total costs are higher than these $500 your conference fee may be waived too. In the poster session, students will have the opportunity to present their work to the judges, who will select three finalists in each category* (graduate/undergraduate) to advance to the next round. - ICFP presentation: The next round consists of an oral presentation at the ICFP to compete for the final awards in each category. ** Prizes ** Both the top three graduate and the top three undergraduate contestants will receive prizes of $500, $300, and $200, respectively. All six winners will receive award medals and a two-year complimentary ACM student membership, including a subscription to ACM’s Digital Library. The names of the winners will be posted on the SRC web site. The winners in each category will be invited to participate in the ACM SRC Grand Finals, an on-line round of competitions among the winners of other conference-hosted SRCs. Grand Finalists and their advisors will be invited to the Annual ACM Awards Banquet for an all-expenses-paid trip, where they will be recognized for their accomplishments along with other prestigious ACM award winners, including the winner of the Turing Award (also known as the Nobel Prize of Computing). The top three graduate Grand Finalists will receive an additional $500, $300, and $200. Likewise, the top three undergraduate Grand Finalists will receive an additional $500, $300, and $200. All six Grand Finalists will receive Grand Finalist certificates. ** Eligibility ** The SRC is open to both undergraduate and graduate students. Upon submission, entrants must be enrolled as a student at their university. The abstract must describe the student’s individual research and must be authored solely by the student. If the work is collaborative with others and/or part of a larger group project, the abstract should make clear what the student’s role was and should focus on that portion of the work. The extended abstract must not exceed 800 words and must not be longer than 2 pages. The reference list does not count towards these limits. To submit an abstract, please register through the submission page and follow the instructions. Abstracts submitted after the deadline may be considered at the committee's discretion, but only after decisions have been made on all abstracts submitted before the deadline. If you have any problems, don't hesitate to contact the competition chair. More information about the submission process can be found online at: http://www.icfpconference.org/icfp2012/src.html ** Important Dates ** Deadline for submission: June 29th Notification of acceptance: July 8th ** Selection Committee ** Koen Claessen, Chalmers University of Technology Robby Findler (ICFP Program chair), Northwestern University Ken Friis Larsen, IT University of Copenhangen Jacques Garrigue, Nagoya University Doaitse Swierstra (Chair), Utrecht University ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ICFP 2012 Call for papers
= ICFP 2012: International Conference on Functional Programming Copenhagen, Denmark, September 9 - 15, 2012 http://www.icfpconference.org/icfp2012 = Important Dates ~~~ Submissions due: Monday Mar 12, 2012 14:00 UTC Author response: Monday May 07, 2012 14:00 UTC - May 9 14:00 UTC Notification: Monday May 28, 2012 Final copy due: Monday Jul 02, 2012 Scope ~ ICFP 2012 seeks original papers on the art and science of functional programming. Submissions are invited on all topics from principles to practice, from foundations to features, and from abstraction to application. The scope includes all languages that encourage functional programming, including both purely applicative and imperative languages, as well as languages with objects, concurrency, or parallelism. Topics of interest include (but are not limited to): * Language Design: concurrency and distribution; modules; components and composition; metaprogramming; interoperability; type systems; relations to imperative, object-oriented, or logic programming * Implementation: abstract machines; virtual machines; interpretation; compilation; compile-time and run-time optimization; memory management; multi-threading; exploiting parallel hardware; interfaces to foreign functions, services, components, or low-level machine resources * Software-Development Techniques: algorithms and data structures; design patterns; specification; verification; validation; proof assistants; debugging; testing; tracing; profiling * Foundations: formal semantics; lambda calculus; rewriting; type theory; monads; continuations; control; state; effects; program verification; dependent types * Analysis and Transformation: control-flow; data-flow; abstract interpretation; partial evaluation; program calculation * Applications and Domain-Specific Languages: symbolic computing; formal-methods tools; artificial intelligence; systems programming; distributed-systems and web programming; hardware design; databases; XML processing; scientific and numerical computing; graphical user interfaces; multimedia programming; scripting; system administration; security * Education: teaching introductory programming; parallel programming; mathematical proof; algebra * Functional Pearls: elegant, instructive, and fun essays on functional programming * Experience Reports: short papers that provide evidence that functional programming really works or describe obstacles that have kept it from working If you are concerned about the appropriateness of some topic, do not hesitate to contact the program chair. Abbreviated instructions for authors * By March 12 2012, 14:00 UTC, submit a full paper of at most 12 pages (6 pages for an Experience Report), including bibliography and figures. The deadlines will be strictly enforced and papers exceeding the page limits will be summarily rejected. * Authors have the option to attach supplementary material to a submission, on the understanding that reviewers may choose not to look at it. * Each submission must adhere to SIGPLAN's republication policy, as explained on the web at http://www.acm.org/sigplan/republicationpolicy.htm * Authors of resubmitted (but previously rejected) papers have the option to attach an annotated copy of the reviews of their previous submission(s), explaining how they have addressed these previous reviews in the present submission. If a reviewer identifies him/herself as a reviewer of this previous submission and wishes to see how his/her comments have been addressed, the program chair will communicate to this reviewer the annotated copy of his/her previous review. Otherwise, no reviewer will read the annotated copies of the previous reviews. Overall, a submission will be evaluated according to its relevance, correctness, significance, originality, and clarity. It should explain its contributions in both general and technical terms, clearly identifying what has been accomplished, explaining why it is significant, and comparing it with previous work. The technical content should be accessible to a broad audience. Functional Pearls and Experience Reports are separate categories of papers that need not report original research results and must be marked as such at the time of submission. Detailed guidelines on both categories are on the conference web site. Proceedings will be published by ACM Press. Authors of accepted submissions are expected to transfer the copyright to the ACM. Presentations will be videotaped and released online if the presenter consents. Formatting: Submissions must be in PDF format printable in black and white on US Letter sized paper and interpretable by Ghostscript. If this requirement is a hardship, make
[Haskell-cafe] ICFP 2012: Call for workshops and co-located events
CALL FOR WORKSHOP AND CO-LOCATED EVENT PROPOSALS ICFP 2012 17th ACM SIGPLAN International Conference on Functional Programming September 9 - 15, 2012 Copenhagen, Denmark http://icfpconference.org/icfp2012/ The 17th ACM SIGPLAN International Conference on Functional Programming will be held in Copenhagen, Denmark on September 9-15, 2012. ICFP provides a forum for researchers and developers to hear about the latest work on the design, implementations, principles, and uses of functional programming. Proposals are invited for workshops (and other co-located events, such as tutorials) to be affiliated with ICFP 2012 and sponsored by SIGPLAN. These events should be more informal and focused than ICFP itself, include sessions that enable interaction among the attendees, and foster the exchange of new ideas. The preference is for one-day events, but other schedules can also be considered. The workshops are scheduled to occur on September 9 (the day before ICFP) and September 13-15 (the three days after ICFP). -- Submission details Deadline for submission: November 19, 2011 Notification of acceptance: December 17, 2011 Prospective organizers of workshops or other co-located events are invited to submit a completed workshop proposal form in plain text format to the ICFP 2012 workshop co-chairs (Patrik Jansson and Gabriele Keller), via email to icfp12-workshops at cse.unsw.edu.au by November 19, 2011. (For proposals of co-located events other than workshops, please fill in the workshop proposal form and just leave blank any sections that do not apply.) Please note that this is a firm deadline. Organizers will be notified if their event proposal is accepted by December 17, 2011, and if successful, depending on the event, they will be asked to produce a final report after the event has taken place that is suitable for publication in SIGPLAN Notices. The proposal form is available at: http://www.icfpconference.org/icfp2012/icfp12-workshops-form.txt Further information about SIGPLAN sponsorship is available at: http://acm.org/sigplan/sigplan_workshop_proposal.htm -- Selection committee The proposals will be evaluated by a committee comprising the following members of the ICFP 2012 organizing committee, together with the members of the SIGPLAN executive committee. Workshop Co-Chair: Gabriele Keller (University of New South Wales) Workshop Co-Chair: Patrik Jansson (Chalmers University of Technology) General Chair :Peter Thiemann (University of Freiburg) Program Chair: Robby Findler (Northwestern University) -- Further information Any queries should be addressed to the workshop co-chairs (Patrik Jansson and Gabriele Keller), via email to icfp12-workshops at cse.unsw.edu.au ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ICFP 2011: Call for participation
= Call for Participation The 16th ACM SIGPLAN International Conference on Functional Programming (ICFP 2011) http://www.icfpconference.org/icfp2011/ Tokyo, Japan September 19-21, 2011 = ICFP provides a forum for researchers and developers to hear about the latest work on the design, implementations, principles, and uses of functional programming. The conference covers the entire spectrum of work, from practice to theory, including its peripheries. * Program: http://www.icfpconference.org/icfp2011/program.html * Registration link: https://regmaster3.com/2011conf/ICFP11/register.php * Local arrangements (including travel and accommodation): http://www.biglab.org/icfp11local/index.html Schedule including related events: September 18 Workshop on Generic Programming (WGP) Workshop on High-Level Parallel Programming and Applications (HLPP) Workshop on ML September 19-21 ICFP September 22 Commercial Users of Functional Programming – Day 1 (CUFP Tutorials) Haskell Symposium September 23 Commercial Users of Functional Programming – Day 2 (CUFP Tutorials) Erlang Workshop Haskell Implementors' Workshop September 24 Commercial Users of Functional Programming – Day 3 (CUFP Talks) Continuation Workshop Conference organizers: * General Co-Chairs: Manuel Chakravarty, University of New South Wales Zhenjiang Hu, National Institute of Informatics * Program Chair: Olivier Danvy, Aarhus University * Local Arrangements Chair: Soichiro Hidaka, National Institute of Informatics * Workshop Co-Chairs: Gabriele Keller, University of New South Wales Derek Dreyer, MPI-SWS * Programming Contest Chair: Eijiro Sumii, Tohoku University * Publicity Chair: Wouter Swierstra, Radboud Universiteit Nijmegen = ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] An update on ICFP'11 in Tokyo (September 18-24, 2011)
Given the fairly recent severe earthquake and tsunami in Japan, you may wonder how this affects the preparations for ICFP'11 in Tokyo. Luckily, Tokyo was significantly less affected by these saddening events than the regions further north. In fact, the situation in Tokyo is almost back to normal, after only two months, with another four months until ICFP. Moreover, all major embassies have in the meantime lifted their travel advisories for the Tokyo metropolitan region (while they still maintain active advisories for some other regions.) Our local organisational team has completed major parts of the preparations and recently summarised the most important facts on a local information page for ICFP'11: http://www.biglab.org/icfp11local/index.html The main conference site is at http://www.icfpconference.org/icfp2011/ We are looking forward to seeing you in Tokyo in September! Manuel Chakravarty Zhenjiang Hu (General Chairs of ICFP'11) ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ICFP 2011 Deadline Extension
= ICFP 2011: International Conference on Functional Programming http://www.icfpconference.org/icfp2011 = On behalf of the Program Committee of ICFP 2011, I would like to announce a deadline extension for authors affected by the recent earthquake in Japan. The Program Committee will accept titles and abstracts until Monday 4 April at 23:59, and full submissions until Thursday 7 April at 23:59 from those authors affected by the earthquake. Our thoughts go out to the victims of this tragedy. Wouter Swierstra ICFP Publicity Chair ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ICFP 2011: Second Call for Papers
= Second Call for Papers ICFP 2011: International Conference on Functional Programming Tokyo, Japan, Monday 19 -- Wednesday 21 September 2011 http://www.icfpconference.org/icfp2011 = Important Dates ~~~ Titles, abstracts keywords due: Thursday 17 March 2011 at 14:00 UTC Submissions due: Thursday 24 March 2011 at 14:00 UTC Author response: Tuesday Wednesday 17-18 May Notification: Monday 30 May 2011 Final copy due: Friday 01 July 2011 Conference: Monday-Wednesday 19-21 September 2011 Scope ~ ICFP 2011 seeks original papers on the art and science of functional programming. Submissions are invited on all topics from principles to practice, from foundations to features, and from abstraction to application. The scope includes all languages that encourage functional programming, including both purely applicative and imperative languages, as well as languages with objects, concurrency, or parallelism. Particular topics of interest include * Language Design: type systems; concurrency and distribution; modules; components and composition; metaprogramming; relations to imperative, object-oriented, or logic programming; interoperability * Implementation: abstract machines; virtual machines; interpretation; compilation; compile-time and run-time optimization; memory management; multi-threading; exploiting parallel hardware; interfaces to foreign functions, services, components, or low-level machine resources * Software-Development Techniques: algorithms and data structures; design patterns; specification; verification; validation; proof assistants; debugging; testing; tracing; profiling * Foundations: formal semantics; lambda calculus; rewriting; type theory; mathematical logic; monads; continuations; delimited continuations; global, delimited, or local effects * Transformation and Analysis: abstract interpretation; partial evaluation; program transformation; program calculation; program proofs; normalization by evaluation * Applications and Domain-Specific Languages: symbolic computing; formal-methods tools; artificial intelligence; systems programming; distributed-systems and web programming; hardware design; databases; XML processing; scientific and numerical computing; graphical user interfaces; multimedia programming; scripting; system administration; security; education * Functional Pearls: elegant, instructive, and fun essays on functional programming * Experience Reports: short papers that provide evidence that functional programming really works or describe obstacles that have kept it from working in a particular application Abbreviated instructions for authors * By 17 March 2011, 14:00 UTC, submit a title, an abstract of at most 300 words, and keywords. * By 24 March 2011, 14:00 UTC, submit a full paper of at most 12 pages (6 pages for a Functional Pearl and for an Experience Report), including bibliography and figures. The deadlines will be strictly enforced and papers exceeding the page limits will be summarily rejected. * Authors have the option to attach supplementary material to a submission, on the understanding that reviewers may choose not to look at it. * Each submission must adhere to SIGPLAN's republication policy, as explained on the web at http://www.acm.org/sigplan/republicationpolicy.htm In addition, authors of resubmitted (but previously rejected) papers have the option to attach an annotated copy of the reviews of their previous submission(s), explaining how they have addressed these previous reviews in the present submission. If a reviewer identifies him/herself as a reviewer of this previous submission and wishes to see how his/her comments have been addressed, the program chair will communicate to this reviewer the annotated copy of his/her previous review. Otherwise, no rewiewer will read the annotated copies of the previous reviews. Overall, a submission will be evaluated according to its relevance, correctness, significance, originality, and clarity. It should explain its contributions in both general and technical terms, clearly identifying what has been accomplished, explaining why it is significant, and comparing it with previous work. The technical content should be accessible to a broad audience. Functional Pearls and Experience Reports are separate categories of papers that need not report original research results and must be marked as such at the time of submission. Detailed guidelines on both categories are on the conference web site. Proceedings will be published by ACM Press. Authors of accepted submissions are expected to transfer the copyright to the ACM. Presentations
[Haskell-cafe] ICFP 2011: Call for papers
= Call for Papers ICFP 2011: International Conference on Functional Programming Tokyo, Japan, Monday 19 -- Wednesday 21 September 2011 http://www.icfpconference.org/icfp2011 = Important Dates ~~~ Titles, abstracts keywords due: Thursday 17 March 2011 at 14:00 UTC Submissions due: Thursday 24 March 2011 at 14:00 UTC Author response: Tuesday Wednesday 17-18 May Notification: Monday 30 May 2011 Final copy due: Friday 01 July 2011 Conference: Monday-Wednesday 19-21 September 2011 Scope ~ ICFP 2011 seeks original papers on the art and science of functional programming. Submissions are invited on all topics from principles to practice, from foundations to features, and from abstraction to application. The scope includes all languages that encourage functional programming, including both purely applicative and imperative languages, as well as languages with objects, concurrency, or parallelism. Particular topics of interest include * Language Design: type systems; concurrency and distribution; modules; components and composition; metaprogramming; relations to imperative, object-oriented, or logic programming; interoperability * Implementation: abstract machines; virtual machines; interpretation; compilation; compile-time and run-time optimization; memory management; multi-threading; exploiting parallel hardware; interfaces to foreign functions, services, components, or low-level machine resources * Software-Development Techniques: algorithms and data structures; design patterns; specification; verification; validation; proof assistants; debugging; testing; tracing; profiling * Foundations: formal semantics; lambda calculus; rewriting; type theory; mathematical logic; monads; continuations; delimited continuations; global, delimited, or local effects * Transformation and Analysis: abstract interpretation; partial evaluation; program transformation; program calculation; program proofs; normalization by evaluation * Applications and Domain-Specific Languages: symbolic computing; formal-methods tools; artificial intelligence; systems programming; distributed-systems and web programming; hardware design; databases; XML processing; scientific and numerical computing; graphical user interfaces; multimedia programming; scripting; system administration; security; education * Functional Pearls: elegant, instructive, and fun essays on functional programming * Experience Reports: short papers that provide evidence that functional programming really works or describe obstacles that have kept it from working in a particular application Abbreviated instructions for authors * By 17 March 2011, 14:00 UTC, submit a title, an abstract of at most 300 words, and keywords. * By 24 March 2011, 14:00 UTC, submit a full paper of at most 12 pages (6 pages for a Functional Pearl and for an Experience Report), including bibliography and figures. The deadlines will be strictly enforced and papers exceeding the page limits will be summarily rejected. * Authors have the option to attach supplementary material to a submission, on the understanding that reviewers may choose not to look at it. * Each submission must adhere to SIGPLAN's republication policy, as explained on the web at http://www.acm.org/sigplan/republicationpolicy.htm In addition, authors of resubmitted (but previously rejected) papers have the option to attach an annotated copy of the reviews of their previous submission(s), explaining how they have addressed these previous reviews in the present submission. If a reviewer identifies him/herself as a reviewer of this previous submission and wishes to see how his/her comments have been addressed, the program chair will communicate to this reviewer the annotated copy of his/her previous review. Otherwise, no rewiewer will read the annotated copies of the previous reviews. Overall, a submission will be evaluated according to its relevance, correctness, significance, originality, and clarity. It should explain its contributions in both general and technical terms, clearly identifying what has been accomplished, explaining why it is significant, and comparing it with previous work. The technical content should be accessible to a broad audience. Functional Pearls and Experience Reports are separate categories of papers that need not report original research results and must be marked as such at the time of submission. Detailed guidelines on both categories are on the conference web site. Proceedings will be published by ACM Press. Authors of accepted submissions are expected to transfer the copyright to the ACM. Presentations
[Haskell-cafe] ICFP 2011: Call for Workshop Proposals
CALL FOR WORKSHOP AND CO-LOCATED EVENT PROPOSALS ICFP 2011 16th ACM SIGPLAN International Conference on Functional Programming September 19 - 21, 2011 Tokyo, Japan http://www.icfpconference.org/icfp2011 The 16th ACM SIGPLAN International Conference on Functional Programming will be held in Tokyo, Japan on September 19-21, 2011. ICFP provides a forum for researchers and developers to hear about the latest work on the design, implementations, principles, and uses of functional programming. Proposals are invited for workshops (and other co-located events, such as tutorials) to be affiliated with ICFP 2011 and sponsored by SIGPLAN. These events should be more informal and focused than ICFP itself, include sessions that enable interaction among the attendees, and be fairly low-cost. The preference is for one-day events, but other schedules can also be considered. NEW THIS YEAR: The workshops are scheduled to occur on September 18 (the day before ICFP) and September 22-24 (the three days after ICFP). -- Submission details Deadline for submission: November 19, 2010 Notification of acceptance: December 17, 2010 Prospective organizers of workshops or other co-located events are invited to submit a completed workshop proposal form in plain text format to the ICFP 2011 workshop co-chairs (Gabriele Keller and Derek Dreyer), via email to icfp11-workshops at mpi-sws.org by November 19, 2010. (For proposals of co-located events other than workshops, please fill in the workshop proposal form and just leave blank any sections that do not apply.) Please note that this is a firm deadline. Organizers will be notified if their event proposal is accepted by December 17, 2010, and if successful, depending on the event, they will be asked to produce a final report after the event has taken place that is suitable for publication in SIGPLAN Notices. The proposal form is available at: http://www.icfpconference.org/icfp2011/icfp11-workshops-form.txt Further information about SIGPLAN sponsorship is available at: http://acm.org/sigplan/sigplan_workshop_proposal.htm -- Selection committee The proposals will be evaluated by a committee comprising the following members of the ICFP 2010 organizing committee, together with the members of the SIGPLAN executive committee. Workshop Co-Chair: Gabriele Keller (University of New South Wales) Workshop Co-Chair: Derek Dreyer (MPI-SWS) General Co-Chair: Manuel Chakravarty (University of New South Wales) General Co-Chair: Zhenjiang Hu (National Institute of Informatics) Program Chair: Olivier Danvy (Aarhus University) -- Further information Any queries should be addressed to the workshop co-chairs (Gabriele Keller and Derek Dreyer), via email to icfp11-workshops at mpi-sws.org. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ICFP '10: Final call for participation
= Final Call for Participation The 15th ACM SIGPLAN International Conference on Functional Programming (ICFP 2010) http://www.icfpconference.org/icfp2010/ Baltimore, Maryland September 25 – October 2 = ICFP 2010 provides a forum for researchers and developers to hear about the latest work on the design, implementations, principles, and uses of functional programming. The conference covers the entire spectrum of work, from practice to theory, including its peripheries. ** Not that the early registration deadline and discount hotel rates expire next week. ** * Program: http://www.icfpconference.org/icfp2010/program.html * Invited speakers: - Mike Gordon ML: Metalanguage or Object Language? - Matthias Felleisen TeachScheme!: A Checkpoint - Guy Blelloch Functional Parallel Algorithms Schedule including related events: * September 25: Workshop on Mechanizing Metatheory (WMM) Workshop on Mathematically Structured Functional Programming (MSFP) Workshop on High-Level Parallel Programming and Applications (HLPP) * September 26: Workshop on ML Workshop on Generic Programming (WGP) * September 27-29: ICFP 2010 * September 30: Haskell Symposium Erlang Workshop * October 1: Commercial Users of Functional Programming – Day 1 (CUFP Tutorials) Haskell Implementors' Workshop * October 2: Commercial Users of Functional Programming – Day 2 (CUFP Talks) This year there will also be a special series of Birds-of-a-Feather sessions associated with CUFP. More information can be found at: http://cufp.org/bofs-2010 Registration information: * Registration link: https://regmaster3.com/2010conf/ICFP10/register.php Local arrangements (including travel and accommodation): * http://www.icfpconference.org/icfp2010/local.html * Conference reservation/rate deadline: September 1st Conference organizers: * General Chair: Paul Hudak, Yale University * Program Chair: Stephanie Weirich, University of Pennsylvania * Local Arrangements Chair: Michael Hicks, University of Maryland * Workshop Co-Chairs: Derek Dreyer, Max Planck Institute for Software Systems Christopher Stone, Harvey Mudd College * Programming Contest Chair: Johannes Waldmann, Hochschule für Technik, Wirtschaft und Kultur, Leipzig * Video Chair: Scott Smith, Johns Hopkins University * Publicity Chair: Wouter Swierstra, Vector Fabrics = ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Embedded scripting Language for haskell app
Can some one please give me a suggestion on the best choice for an embedded scripting Language for a haskell application? Why not use Haskell itself? I agree that C and Java aren't perhaps the best choice for application scripting – but both Xmonad and Yi have had quite some success using Haskell to script/configure a Haskell application. Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: Haskell in Industry
Good, we need more functional programmers actually solving real problems. But please put your skills to work in an industry other than investment banking. There are lots of companies outside of investment-banking using functional programming. Bluespec, Galois, TypLab, are all serious Haskell users. Larger companies such as ATT, Facebook, and Google have all used Haskell for various projects. If you look a bit further afield, there are even more companies using F#, Caml, and Erlang. I use Caml almost exclusively in my day job at Vector Fabrics – which is poles apart from investment banking. (And yes, we're always interested in hiring good functional programmers.) If you want a FP job outside of investment banking, keep an eye on the CUFP website and the FP mailing lists. Opportunities abound! Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ICFP 2010: Call for participation
= Call for Participation The 15th ACM SIGPLAN International Conference on Functional Programming (ICFP 2010) http://www.icfpconference.org/icfp2010/ Baltimore, Maryland September 25 – October 2 = ICFP 2010 provides a forum for researchers and developers to hear about the latest work on the design, implementations, principles, and uses of functional programming. The conference covers the entire spectrum of work, from practice to theory, including its peripheries. * Program: http://www.icfpconference.org/icfp2010/program.html * Invited speakers: - Mike Gordon ML: Metalanguage or Object Language? - Matthias Felleisen TeachScheme!: A Checkpoint - Guy Blelloch Functional Parallel Algorithms Schedule including related events: * September 25: Workshop on Mechanizing Metatheory (WMM) Workshop on High-Level Parallel Programming and Applications (HLPP) * September 26: Workshop on ML Workshop on Generic Programming (WGP) * September 27-29: ICFP 2010 * September 30: Haskell Symposium Erlang Workshop * October 1: Commercial Users of Functional Programming – Day 1 (CUFP Tutorials) Haskell Implementors' Workshop * October 2: Commercial Users of Functional Programming – Day 2 (CUFP Talks) Registration information: * Registration link: https://regmaster3.com/2010conf/ICFP10/register.php Local arrangements (including travel and accommodation): * http://www.icfpconference.org/icfp2010/local.html * Conference reservation/rate deadline: September 1st Conference organizers: * General Chair: Paul Hudak, Yale University * Program Chair: Stephanie Weirich, University of Pennsylvania * Local Arrangements Chair: Michael Hicks, University of Maryland * Workshop Co-Chairs: Derek Dreyer, Max Planck Institute for Software Systems Christopher Stone, Harvey Mudd College * Programming Contest Chair: Johannes Waldmann, Hochschule für Technik, Wirtschaft und Kultur, Leipzig * Video Chair: Scott Smith, Johns Hopkins University * Publicity Chair: Wouter Swierstra, Vector Fabrics = ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ICFP Programming Contest
This year's ICFP Programming Contest will begin on June 18th (12:00 Noon GMT) and will run till June 21st (12:00 Noon GMT). As in the previous editions, this is your chance to show that your favorite programming language is better than all others! The problem statement and further information will become available at: http://icfpcontest.org/2010/ Feel free to contact ifcpcont at imn dot htwk-leipzig dot de for further questions. Good luck! Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] OT: the format checker for ICFP 2010 papers, help!
Hi Iustin, cc-Stephanie, I submitted a paper for ICFP but the paper checker says: “Margins too small: text block bigger than maximum 7in x 9in on pages 1–6 by 4–5% in at least one dimension”. Now, I've used the standard class file and template, didn't alter any of the margins/columns spacing, my paper size is set to letter, and pdflatex doesn't give me any overfull hboxes. Does anyone know why the error happens in this case? You may want to check with Stephanie Weirich. She is the chair of the program committee for this year's ICFP. I'm sure she can help you submit your paper. Good luck! Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] OT: the format checker for ICFP 2010 papers, help!
I just thought I'd pass on Stephanie's response, as she couldn't post to the list: It looks like the SIGPLAN class file has gotten out of sync with the paper requirements and is producing a slightly too large textblock. I just checked the template (filled out with random text) against the format checker. It fails. In this situation, it seems wisest to go with the class file instead of the stated height requirement. I've upped the format checker to a max 9.5in height to account for this discrepancy. Hope this helps, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ICFP 2010: Final Call for Papers
= Final Call for Papers ICFP 2010: International Conference on Functional Programming Baltimore, Maryland, 27 -- 29 September 2010 http://www.icfpconference.org/icfp2010 = Important Info ~ Submission:2 April 2010 Author response: 24 -- 25 May 2010 Notification: 7 June 2010 Final papers due: 12 July 2010 All deadlines are at 14:00 UTC. Submission is now open at http://icfp2010.seas.upenn.edu/ Scope ~ ICFP 2010 seeks original papers on the art and science of functional programming. Submissions are invited on all topics from principles to practice, from foundations to features, from abstraction to application. The scope includes all languages that encourage functional programming, including both purely applicative and imperative languages, as well as languages with objects or concurrency. Particular topics of interest include * Language Design: type systems; concurrency and distribution; modules; components and composition; metaprogramming; relations to object-oriented or logic programming; interoperability * Implementation: abstract machines; compilation; compile-time and run-time optimization; memory management; multi-threading; exploiting parallel hardware; interfaces to foreign functions, services, components or low-level machine resources * Software-Development Techniques: algorithms and data structures; design patterns; specification; verification; validation; proof assistants; debugging; testing; tracing; profiling * Foundations: formal semantics; lambda calculus; rewriting; type theory; monads; continuations; control; state; effects * Transformation and Analysis: abstract interpretation; partial evaluation; program transformation; program calculation; program proof * Applications and Domain-Specific Languages: symbolic computing; formal-methods tools; artificial intelligence; systems programming; distributed-systems and web programming; hardware design; databases; XML processing; scientific and numerical computing; graphical user interfaces; multimedia programming; scripting; system administration; security; education * Functional Pearls: elegant, instructive, and fun essays on functional programming The conference also solicits Experience Reports, which are short papers that provide evidence that functional programming really works or describe obstacles that have kept it from working in a particular application. Abbreviated instructions for authors By 2 April 2010, 14:00 UTC, submit an abstract of at most 300 words and a full paper of at most 12 pages (6 pages for an Experience Report), including bibliography and figures. The deadline will be strictly enforced and papers exceeding the page limits will be summarily rejected. Authors have the option to attach supplementary material to a submission, on the understanding that reviewers may choose not to look at it. A submission will be evaluated according to its relevance, correctness, significance, originality, and clarity. It should explain its contributions in both general and technical terms, clearly identifying what has been accomplished, explaining why it is significant, and comparing it with previous work. The technical content should be accessible to a broad audience. Functional Pearls and Experience Reports are separate categories of papers that need not report original research results and must be marked as such at the time of submission. Detailed guidelines on both categories are on the conference web site. Each submission must adhere to SIGPLAN's republication policy, as explained on the web at http://www.acm.org/sigplan/republicationpolicy.htm. Proceedings will be published by ACM Press. Authors of accepted submissions are expected to transfer the copyright to the ACM. Presentations will be videotaped and released online if the presenter consents by signing an additional permission form at the time of the presentation. Formatting: Submissions must be in PDF format printable in black and white on US Letter sized paper and interpretable by Ghostscript. If this requirement is a hardship, make contact with the program chair at least one week before the deadline. Papers must adhere to the standard ACM conference format: two columns, nine-point font on a ten-point baseline, with columns 20pc (3.33in) wide and 54pc (9in) tall, with a column gutter of 2pc (0.33in). A suitable document template for LATEX is available from SIGPLAN at http://www.acm.org/sigs/sigplan/authorInformation.htm. Submission: Submissions will be accepted electronically at a URL to be named later. Improved versions of a paper may be submitted at any point before the submission deadline using the same web interface. Author response: Authors will have a 48-hour period, starting
[Haskell-cafe] ICFP 2010: Second call for papers
= Second Call for Papers ICFP 2010: International Conference on Functional Programming Baltimore, Maryland, 27 -- 29 September 2010 http://www.icfpconference.org/icfp2010 = Important Dates (at 14:00 UTC) ~ Submission:2 April 2010 Author response: 24 -- 25 May 2010 Notification: 7 June 2010 Final papers due: 12 July 2010 Scope ~ ICFP 2010 seeks original papers on the art and science of functional programming. Submissions are invited on all topics from principles to practice, from foundations to features, from abstraction to application. The scope includes all languages that encourage functional programming, including both purely applicative and imperative languages, as well as languages with objects or concurrency. Particular topics of interest include * Language Design: type systems; concurrency and distribution; modules; components and composition; metaprogramming; relations to object-oriented or logic programming; interoperability * Implementation: abstract machines; compilation; compile-time and run-time optimization; memory management; multi-threading; exploiting parallel hardware; interfaces to foreign functions, services, components or low-level machine resources * Software-Development Techniques: algorithms and data structures; design patterns; specification; verification; validation; proof assistants; debugging; testing; tracing; profiling * Foundations: formal semantics; lambda calculus; rewriting; type theory; monads; continuations; control; state; effects * Transformation and Analysis: abstract interpretation; partial evaluation; program transformation; program calculation; program proof * Applications and Domain-Specific Languages: symbolic computing; formal-methods tools; artificial intelligence; systems programming; distributed-systems and web programming; hardware design; databases; XML processing; scientific and numerical computing; graphical user interfaces; multimedia programming; scripting; system administration; security; education * Functional Pearls: elegant, instructive, and fun essays on functional programming The conference also solicits Experience Reports, which are short papers that provide evidence that functional programming really works or describe obstacles that have kept it from working in a particular application. Abbreviated instructions for authors By 2 April 2010, 14:00 UTC, submit an abstract of at most 300 words and a full paper of at most 12 pages (6 pages for an Experience Report), including bibliography and figures. The deadline will be strictly enforced and papers exceeding the page limits will be summarily rejected. Authors have the option to attach supplementary material to a submission, on the understanding that reviewers may choose not to look at it. A submission will be evaluated according to its relevance, correctness, significance, originality, and clarity. It should explain its contributions in both general and technical terms, clearly identifying what has been accomplished, explaining why it is significant, and comparing it with previous work. The technical content should be accessible to a broad audience. Functional Pearls and Experience Reports are separate categories of papers that need not report original research results and must be marked as such at the time of submission. Detailed guidelines on both categories are on the conference web site. Each submission must adhere to SIGPLAN's republication policy, as explained on the web at http://www.acm.org/sigplan/republicationpolicy.htm. Proceedings will be published by ACM Press. Authors of accepted submissions are expected to transfer the copyright to the ACM. Presentations will be videotaped and released online if the presenter consents by signing an additional permission form at the time of the presentation. Formatting: Submissions must be in PDF format printable in black and white on US Letter sized paper and interpretable by Ghostscript. If this requirement is a hardship, make contact with the program chair at least one week before the deadline. Papers must adhere to the standard ACM conference format: two columns, nine-point font on a ten-point baseline, with columns 20pc (3.33in) wide and 54pc (9in) tall, with a column gutter of 2pc (0.33in). A suitable document template for LATEX is available from SIGPLAN at http://www.acm.org/sigs/sigplan/authorInformation.htm. Submission: Submissions will be accepted electronically at a URL to be named later. Improved versions of a paper may be submitted at any point before the submission deadline using the same web interface. Author response: Authors will have a 48-hour period, starting at 14:00 UTC on 24 May 2010, to read and respond to
Re: [Haskell-cafe] Data.Ring -- Pre-announce
Hi John, I threw something together fairly quickly and would like some feedback before tossing it on Hackage. I'd really appreciate if some one would: make sure the code looks goodish (127 lines with full docs) make sure my tests look saneish A similar structure is used in XMonad where it's called a Stack (which isn't a very good name). There are loads of QuickCheck properties in the XMonad sources you might want to use. Hope this helps, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ICFP '10: Second call for workshop proposals
CALL FOR WORKSHOP AND CO-LOCATED EVENT PROPOSALS ICFP 2010 15th ACM SIGPLAN International Conference on Functional Programming September 27 - 29, 2010 Baltimore, Maryland http://www.icfpconference.org/icfp2010 The 15th ACM SIGPLAN International Conference on Functional Programming will be held in Baltimore, Maryland on September 27-29, 2010. ICFP provides a forum for researchers and developers to hear about the latest work on the design, implementations, principles, and uses of functional programming. Proposals are invited for workshops (and other co-located events, such as tutorials) to be affiliated with ICFP 2010 and sponsored by SIGPLAN. These events should be more informal and focused than ICFP itself, include sessions that enable interaction among the attendees, and be fairly low-cost. The preference is for one-day events, but other schedules can also be considered. -- Submission details Deadline for submission: November 20, 2009 Notification of acceptance: December 18, 2009 Prospective organizers of workshops or other co-located events are invited to submit a completed workshop proposal form in plain text format to the ICFP 2010 workshop co-chairs (Derek Dreyer and Chris Stone), via email to icfp10-workshops at mpi-sws.org by November 20, 2009. (For proposals of co-located events other than workshops, please fill in the workshop proposal form and just leave blank any sections that do not apply.) Please note that this is a firm deadline. Organizers will be notified if their event proposal is accepted by December 18, 2009, and if successful, depending on the event, they will be asked to produce a final report after the event has taken place that is suitable for publication in SIGPLAN Notices. The proposal form is available at: http://www.icfpconference.org/icfp2010/icfp10-workshops-form.txt Further information about SIGPLAN sponsorship is available at: http://acm.org/sigplan/sigplan_workshop_proposal.htm -- Selection committee The proposals will be evaluated by a committee comprising the following members of the ICFP 2010 organizing committee, together with the members of the SIGPLAN executive committee. Workshop Co-Chair: Derek Dreyer (MPI-SWS) Workshop Co-Chair: Chris Stone (Harvey Mudd College) General Chair: Paul Hudak (Yale University) Program Chair: Stephanie Weirich (University of Pennsylvania) -- Further information Any queries should be addressed to the workshop co-chairs (Derek Dreyer and Chris Stone), via email to icfp10-workshops at mpi-sws.org. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ICFP 2010: Call for papers
= Call for Papers ICFP 2010: International Conference on Functional Programming Baltimore, Maryland, 27 -- 29 September 2010 http://www.icfpconference.org/icfp2010 = Important Dates (at 14:00 UTC) ~ Submission:2 April 2010 Author response: 24 -- 25 May 2010 Notification: 7 June 2010 Final papers due: 12 July 2010 Scope ~ ICFP 2010 seeks original papers on the art and science of functional programming. Submissions are invited on all topics from principles to practice, from foundations to features, from abstraction to application. The scope includes all languages that encourage functional programming, including both purely applicative and imperative languages, as well as languages with objects or concurrency. Particular topics of interest include * Language Design: type systems; concurrency and distribution; modules; components and composition; metaprogramming; relations to object-oriented or logic programming; interoperability * Implementation: abstract machines; compilation; compile-time and run-time optimization; memory management; multi-threading; exploiting parallel hardware; interfaces to foreign functions, services, components or low-level machine resources * Software-Development Techniques: algorithms and data structures; design patterns; specification; verification; validation; proof assistants; debugging; testing; tracing; profiling * Foundations: formal semantics; lambda calculus; rewriting; type theory; monads; continuations; control; state; effects * Transformation and Analysis: abstract interpretation; partial evaluation; program transformation; program calculation; program proof * Applications and Domain-Specific Languages: symbolic computing; formal-methods tools; artificial intelligence; systems programming; distributed-systems and web programming; hardware design; databases; XML processing; scientific and numerical computing; graphical user interfaces; multimedia programming; scripting; system administration; security; education * Functional Pearls: elegant, instructive, and fun essays on functional programming The conference also solicits Experience Reports, which are short papers that provide evidence that functional programming really works or describe obstacles that have kept it from working in a particular application. Abbreviated instructions for authors By 2 April 2010, 14:00 UTC, submit an abstract of at most 300 words and a full paper of at most 12 pages (6 pages for an Experience Report), including bibliography and figures. The deadline will be strictly enforced and papers exceeding the page limits will be summarily rejected. Authors have the option to attach supplementary material to a submission, on the understanding that reviewers may choose not to look at it. A submission will be evaluated according to its relevance, correctness, significance, originality, and clarity. It should explain its contributions in both general and technical terms, clearly identifying what has been accomplished, explaining why it is significant, and comparing it with previous work. The technical content should be accessible to a broad audience. Functional Pearls and Experience Reports are separate categories of papers that need not report original research results and must be marked as such at the time of submission. Detailed guidelines on both categories are on the conference web site. Each submission must adhere to SIGPLAN's republication policy, as explained on the web at http://www.acm.org/sigplan/republicationpolicy.htm. Proceedings will be published by ACM Press. Authors of accepted submissions are expected to transfer the copyright to the ACM. Presentations will be videotaped and released online if the presenter consents by signing an additional permission form at the time of the presentation. Formatting: Submissions must be in PDF format printable in black and white on US Letter sized paper and interpretable by Ghostscript. If this requirement is a hardship, make contact with the program chair at least one week before the deadline. Papers must adhere to the standard ACM conference format: two columns, nine-point font on a ten-point baseline, with columns 20pc (3.33in) wide and 54pc (9in) tall, with a column gutter of 2pc (0.33in). A suitable document template for LATEX is available from SIGPLAN at http://www.acm.org/sigs/sigplan/authorInformation.htm. Submission: Submissions will be accepted electronically at a URL to be named later. Improved versions of a paper may be submitted at any point before the submission deadline using the same web interface. Author response: Authors will have a 48-hour period, starting at 14:00 UTC on 24 May 2010, to read
Re: [Haskell-cafe] ANN: Data.Stream 0.4
1) What's the difference between your: tail ~(Cons _ xs) = xs and the more simple: tailStrict (Cons _ xs) = xs ? I'm no expert - but I can't think of any difference at all. 2) Why don't you also use an irrefutable pattern in take? take is now defined as: This is a trickier question: should take 0 undefined by [] or undefined? I'm not sure what the best choice is. I suppose it makes sense to stick with the behaviour of Data.List and return an empty list, even if any program that relies on this not being undefined is probably broken. I've uploaded a new version. Thanks for your comments! Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ANN: Data.Stream 0.4
I'm happy to announce a new release of the Data.Stream library. http://hackage.haskell.org/package/Stream The only change with the previous version has been to add irrefutable patterns to several function definitions. This is rather delicate design decision: too many irrefutable patterns could result in thunks not being evaluated; too few irrefutable patterns could cause your functions diverge. As a rule of thumb I've chosen only to use irrefutable patterns in functions that produce streams from streams. The operations that observe finite information (a prefix, the element at index i, etc.) do not have have irrefutable patterns and force evaluation to weak head normal form. I've uploaded a new version to Hackage. I'd be interested to hear if any existing code takes a performance hit as a result of these changes. Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] \Statically checked binomail heaps?
Hi Maciej, insTree t [] = [t] insTree t ts@(t':ts') | rank t rank t' = t : ts | otherwise = insTree (link t t') ts' In a way, it's unsurprising that this is where your code breaks. What you're doing here is using a boolean guard to determine where to insert. The problem is that ghc's type checker doesn't learn anything from these boolean guards. In contrast to pattern matching on a GADT, you can always exchange the two branches of an if-than-else without breaking type correctness. To get the code to work the type checker needs learn something about the ranks of t and t' after comparing them. Have anyone an idea how make this code working? Use a different language. In particular, you might want to have a look at Agda - a programming language and proof assistand based on dependent types that has a very similar look-and-feel to Haskell. If you're interested, you may want to have a look at similar developments by some of our students at Chalmers: http://web.student.chalmers.se/groups/datx02-dtp/ They've given verified implementations in Agda of some fairly advanced data structures. Hope this helps, Wouter PS - There may be a way around this by writing even more type-level programs in Haskell, basically reflecting () on the type-level and doing some really hard work to relate the type level numbers to the value level numbers. Brace yourself for a world of pain. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [solved] Re: [Haskell-cafe] Calling Haskell from C, Linking with gcc?
On 7 Oct 2009, at 23:39, John Velman wrote: For anyone following this: The XCode ld script is complex, and has mac specific defaults early in the search path specification, and I probably don't want to change these. A library in a default path is the wrong libgmp.[dylib | a]. Is there any chance you'll write up exactly what you needed to do on a blog/TMR article/Haskell wiki page? I've tried doing something similar, ran into linking problems, and gave up my fight with XCode. I think this would be a really useful resource for both Obj-C programmers looking into Haskell and Haskell programmers who want to have a fancy Cocoa GUI. Thanks! Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ICFP videos now available
I am happy to announce that videos of all talks at ICFP and some of the associated workshops this year have made available online: http://www.vimeo.com/user2191865/albums I'm sure you'll join me in thanking Malcolm Wallace for the time and effort he put into making this possible. Thank you Malcolm! Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] New TMR editor
Dear all, After several years at the helm, I've decided to step down as editor of the Monad.Reader. I am happy to announce that Brent Yorgey will take over my role as editor. I'd like to take this opportunity to thank Brent for helping to keep the Monad.Reader alive. I'm sure he'll do a fantastic job. Finally, I'd like to thank all the people who have contributed to the Monad.Reader over the last few years – you guys have made this publication, and my job as an editor, so much fun. All the best, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ANN: The Monad.Reader - Issue 14
Dear all, I am pleased to announce that a new issue of The Monad.Reader is now available: http://themonadreader.wordpress.com/ Issue 14 consists of the following three articles: * Fun with Morse Code by Heinrich Apfelmus * Hieroglyph 2: Purely Functional Information Graphics Revisited by Jefferson Heard * Lloyd Allison’s Corecursive Queues: Why Continuations Matter by Leon P Smith Please note that I've moved the Monad.Reader to a new Wordpress blog. You may want to update your bookmarks. If you’d like to write something for the next issue of The Monad.Reader, please get in touch. I haven’t fixed the deadline for the next issue just yet, but expect a deadline late 2009. Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] A Question of Restriction
Would you be so kind as to elaborate? Sure. I'll just sketch how to deal the example in your e-mail. If you want to use recursive data types (like Lists or Trees), you'll need to use the Expr data type from the paper. Instead of defining: data Foo = One | Two | Three | Four Define the following data types: data One = One data Two = Two data Three = Three data Four = Four You can define the following data type to assemble the pieces: infixr 6 :+: data (a :+: b) = Inl a | Inr b So, for example you could define: type Odd = One :+: Three type Even = Two :+: Four type Foo = One :+: Two :+: Three :+: Four To define functions modularly, it's a good idea to use Haskell's clasess to do some of the boring work for you. Here's another example: class ToNumber a where toNumber :: a - Int instance ToNumber One where toNumber One = 1 (and similar instances for Two, Three, and Four) The key instance, however, is the following: instance (ToNumber a, ToNumber b) = ToNumber (a :+: b) where toNumber (Inl a) = toNumber a toNumber (Inr b) = toNumber b This instance explains how to build instances for Odd, Even, and Foo from the instances for One, Two, Three, and Four. An example ghci sessions might look like: *Main let x = Inl One :: Odd *Main toNumber x 1 *Main let y = Inr (Inr (Inl Three) :: Foo *Main toNumber y 3 Of course, writing all these injections (Inr (Inr (Inl ...))) gets dull quite quickly. The () class in the paper explains how to avoid this. I hope this gives you a better idea of how you might go about solving your problem. All the best, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] A Question of Restriction
Hi Brian, If I understand you correctly, you've run into the Expression Problem. Phil Wadler posed the problem in a widely-cited e-mail, formulating it much more clearly than I ever could: http://homepages.inf.ed.ac.uk/wadler/papers/expression/expression.txt There are lots of ways to tackle this problem in Haskell - just google Expression Problem Haskell. My (completely biased) personal favourite is: http://www.cse.chalmers.se/~wouter/Publications/DataTypesALaCarte.pdf Hope this helps, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Question on rank-N polymorphism
The idea is that fs accepts a polymorphic function as its argument. What type signature can I specify for f in order to compile this code? As you said yourself, you need to add a type signature to fs: {-# LANGUAGE RankNTypes #-} fs :: ((forall a . ((a, a) - a)) - t) - (t, t) fs g = (g fst, g snd) examples = (fs id, fs repeat, fs (\x - [x]), fs ((,)id)) Hope this helps, Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Using type families to define runtime representation and evaluation strategy?
On 3 Jun 2009, at 20:49, Corey O'Connor wrote: I'm interested in the feasibility of extending the compiler using a construct similar to type synonym families to determine runtime representation and evaluation strategy for types. Can anybody point me to existing work in this area? You may also want to look at work by Paul Levy on Call-by-push-value and more recently, Noam Zeilberger (and others at CMU) on focussing. Both use types to control when and how evaluation happens. Hope this helps, Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] The Monad.Reader (14) - Call for copy
Call for Copy The Monad.Reader - Issue 14 Please consider writing something for the next issue of The Monad.Reader. The deadline for Issue 14 is: ** May 15, 2009 ** The Monad.Reader is a electronic magazine about all things Haskell. Check out the website and browse the previous editions to learn more: http://www.haskell.org/haskellwiki/The_Monad.Reader * Submission Details * Get in touch if you intend to submit something -- the sooner you let me know what you're up to, the better. Please submit articles for the next issue to me by e-mail (wouter at chalmers.se). Articles should be written according to the guidelines available from: http://www.haskell.org/haskellwiki/The_Monad.Reader Please submit your article in PDF, together with any source files you used. The sources will be released together with the magazine under a BSD license. Looking forward to your submission, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Unary Minus
If I use :info (-) I get information on the binary minus. Is unary minus also a function? You can define it yourself or use negate from the Prelude. Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Parsing with Proof
I am wondering about how to give a correctness prove of a simple parsing algorithm. I tried to think of a simple example but even in this case I don't know how. I'm not sure I understand your question, but I'm guessing you're looking for general techniques for the formal verification of combinator-based parsers. Here's a quick brain dump of related work that might help you get started. Nils Anders Danielsson wrote a verified regexp matcher in Agda a while ago. http://www.cs.chalmers.se/~ulfn/darcs/Agda2/examples/AIM6/RegExp/ Although this isn't quite parsing, the ideas are relatively simple so it's a good place to start. (Bob Harper has a theoretical pearl on the topic, which might be worth checking out to get some inspiration). More recently, Nils Anders has extended this to parser combinators together with Ulf Norell: http://www.cs.nott.ac.uk/~nad/publications/danielsson-norell-parser-combinators.pdf Alternatively, you could explore how to implement similar ideas in Coq. I'm a big Program fan and recently used it to verify some simple programs in the state monad. I've just submitted a paper about this: http://www.cse.chalmers.se/~wouter/Publications/HoareStateMonad.pdf I'd imagine you might be able to take a similar approach to applicative (or monadic) parser combinators. Doaitse Swierstra recently wrote a good overview tutorial about parser combinators in general that is certainly worth checking out: http://www.cs.uu.nl/research/techreps/repo/CS-2008/2008-044.pdf Hope this helps, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Haddock: inserting interactive sessions in the documentation
What is the suggested (if any) convention for inserting an interactive session in the documentation? You may want to look at: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/DocTest Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] encoding for least fixpoint
Hi Ben, But this definition coincides with his definition of the greatest fixpoint In Haskell the least and greatest fixed points coincide. (Categorically, this is called algebraically compact I think). You can still fake coinductive types to some degree by consistently using unfolds rather than folds. Then I stumbled over a blog entry of Shin-Cheng Mu [2] and from there over an article of Wadler [3], where the least fixpoint is encoded as Lfix X. F X = All X. (F X - X) - X. and the greatest fixpoint as Gfix X. F X = Exists X. (X - F X) * X. I would like to understand these definitions, or get an intuition about their meaning. So here's my attempt at an explanation. For every least fixed point of a functor: data Mu f = In (f (Mu f)) you can define a fold: fold :: forall a . (f a - a) - Mu f - a fold algebra (In t) = algebra (fmap (fold algebra) t) Now your definition of Lfix above basically identifies the data type with all possible folds over it. (I suspect you will need some parametricity result to show that this is really an isomorphism) For codata, instead of having a fold you get an unfold: unfold :: forall a . (a - f a) - a - Nu f unfold coalg x = In (fmap (unfold coalg) (g x)) And your Gfix type above identifies every codata type with its unfold. To see this, you need to realise that: forall a . (a - f a) - a - Nu f is isomorphic to: forall a . (a - f a , a) - Nu f is isomporphic to: (exists a . (a - f a, a)) - Nu f which gives you one direction of the iso. Now in case you think this is all airy-fairy category theory, there's a really nice paper Stream fusion: from lists to streams to nothing at all that shows how to use this technology to get some serious speedups over all kinds of list-processing functions. Hope this helps, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: Uploading files to the wiki
I've set both limits to 20MiB, and switched off MediaWiki's warning. I've uploaded Wouter's file to [[Image:TMR-Issue13.pdf]]. Fantastic! Thanks for all your help, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ANN: The Monad.Reader (13)
I am pleased to announce that a new issue of The Monad.Reader is now available: http://www.haskell.org/haskellwiki/The_Monad.Reader The Monad.Reader is a quarterly magazine about functional programming. Issue 13 consists of the following four articles: * Stephen Hicks Rapid Prototyping in TEX * Brent Yorgey The Typeclassopedia * Chris Eidhof, Eelco Lempsink Book Review: Real World Haskell * Derek Elkins Calculating Monads with Category Theory Special thanks to Ashley Yakeley for his help with publishing The Monad.Reader on the Haskell wiki. If you'd like to write something for the next issue of The Monad.Reader, please get in touch. I haven't fixed the deadline for the next issue, but it should be mid-May or thereabouts. Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Uploading files to the wiki
I can't manage to upload files to the Haskell wiki. I've tried different browsers, different internet connections, different machines, different operating systems, and different user accounts - all without success. Is this a new anti-spam measure? This is slightly annoying. I was looking to release the next Monad.Reader on the wiki. Thanks for any advice, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Haskell.org GSoC
This could look like: module Integer where .. theorem read_parses_what_show_shows : (a :: Integer, Show a, Read a) = show . read a = id a proof axiom There are several problems with this approach. For example, I can show: const 0 (head []) = 0 But if I pretend that I don't know that Haskell is lazy: const 0 (head []) = const 0 (error ) = error ... Which would allow me to substitute each occurrence of 0 with error - which probably isn't a good idea. So to do proper equational reasoning in a lazy language you need to be extremely careful with evaluation order. Predicting the evaluation order of code generated by ghc -O2 Main.hs is non-trivial to say the least. To make matters worse, as you're working in a language with general recursion, you have to be fight quite hard to avoid introducing inconsistencies in your proof language. Alberto wrote: As far as I understand, a dependent type system can restrict the set of values for wich a function apply, but it can not express complex relationships between operations. My knowledge on dependent types is very limited. I would like to be wrong on this. I'm sorry, but you're wrong. Dependent types can encode the kind of equational proofs Sylvain mentioned perfectly adequately. Lennart Augustsson has a nice note explaining the principle in the context of Cayenne: http://www.cs.chalmers.se/~augustss/cayenne/eqproof.ps The good news is: in languages like Coq and Agda you can write total functional programs, like map or ++, verify such properties and extract Haskell code. Hope this helps, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Haskell.org GSoC
Unfortunately the proofs in dependently typed languages are extremely long and tedious to write. Some kind of compiler proofing tool could ease the pain, but I do not think it has low enough complexity for a GSoC project. I wouldn't say that. Here's the complete proof script in Coq proving the theorem that was originally proposed: length (map f (xs ++ ys)) = length xs + length ys. It weighs in at about 30 lines, although I could probably get it down to less than 10. The proofs maybe look a bit unfamiliar if you haven't seen Coq before, but they are hardly extremely long and tedious to write. I can understand that raw proof *terms* in type theory can be long and painful to write. But that's like saying Haskell is bad, because its hard to understand ghc-core. Wouter Require Import List. Variables a b : Set. Variable f : a - b. Lemma lengthMap : forall (xs : list a), length (map f xs) = length xs. Proof. intros. induction xs; trivial. simpl; rewrite IHxs. reflexivity. Qed. Lemma appendLength : forall (xs ys : list a), length (xs ++ ys) = length xs + length ys. Proof. intros. induction xs; trivial. simpl; rewrite IHxs. reflexivity. Qed. Lemma main : forall (xs ys : list a), length (map f (xs ++ ys)) = length xs + length ys. Proof. intros. rewrite lengthMap. rewrite appendLength. reflexivity. Qed. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ANN: Data.Stream 0.3
I've released a new version of the Data.Stream package, a modest library for manipulating infinite lists. Changes include: * Support for lazy SmallCheck; * Improved Show instance; * Stricter scans; * Various documentation fixes; * Several new functions from Data.List. Many of these features were based on patches by Bas van Dijk - thank you Bas! Haddock:http://www.cs.nott.ac.uk/~wss/repos/Stream/dist/doc/html/Stream/ Hackage:http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Stream/ darcs: darcs get http://www.cs.nott.ac.uk/~wss/repos/Stream All the best, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Looking for pointfree version
snip How about using Data.Monoid: down = downPar `mappend` downNew `mappend` downTrans Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Comments from OCaml Hacker Brian Hurt
At the risk of painting my own bikeshed... If you're learning Haskell, which communicates the idea more clearly: * Appendable or * Monoid Would you call function composition (on endofunctions) appending? The join of a monad? A semi-colon (as in sequencing two imperative statements)? How do you append two numbers? Addition, multiplication, or something else entirely? All these operations are monoidal, i.e., are associative and have both left and right identities. If that's exactly what they have in common, why invent a new name? Appendable may carry some intuition, but it is not precise and sometimes quite misleading. I guess the bottom line question is: who is Haskell for? Category theorists, programmers, or both? I'd love it to be for both, but I've got to admit that Brian has a point that it is trending to the first in some areas. One of my grievances about Haskell is the occasional disregard for existing terminology. Stream Fusion is about lazy lists/co-lists, not streams; type families mean something entirely different to type theorists. This kind of misnomer is even more confusing than a name that doesn't mean anything (at least, until you learn more category theory). Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] How to define Show [MyType] ?
The biggest wart is that view is not a total function; the compiler needs to be extra careful to only call it on types that are instances of View. I wonder if there is a good way to solve this problem? The usual way to solve this is to define a data type corresponding to all the types in your class. For example: data Data a where | CHAR : Data Char | STRING : Data String | LIST : Data a - Data [a] ... With this representation you no longer need typecase (which is horrendous semantic hack) and your dispatch function can be made total. Hope this helps, Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Monadic bind with associated types + PHOAS?
Hi Ryan, On 19 Nov 2008, at 04:39, Ryan Ingram wrote: In HOAS, a lambda expression in the target language is represented by a function in the source language: data ExpE t where ApE :: ExpE (a - b) - ExpE a - ExpE b LamE :: (ExpE a - ExpE b) - ExpE (a - b) But without a way to inspect the function inside LamE, you can't get back to the source code. You end up adding special constructors for Primitive or Variable to let you do something with the resultant structure, which leads to the expression language containing unsafe constructors which need to be hidden. There's a perfectly legitimate way to incorporate free variables in your expression data type, without sacrificing type safety. You just need to parametrise your expression type by the context: data Exp g t where App :: Exp g (a - b) - Exp g a - Exp g b Lam :: (Exp g a - Exp g b) - Exp g (a - b) Var :: Var g a - Exp g a data Var g a where Top :: Var (a,g) a Pop :: Var a g - Var a (b, g) I wouldn't call this unsafe (or at least no more unsafe than HOAS). Note that in particular Exp Empty a correspond to closed terms, where Empty denotes the empty type. Secondly, you can always turn a HOAS Exp into non-HOAS expression. Essentially, you map applications to applications, etc. The only interesting case deal with lambda abstractions - there you need to generate a fresh variable name, apply the function to the fresh variable, and continue traversing the resulting expression. You might be interested in a tutorial Andres Loeh, Conor McBride, and I wrote about implementing a dependently typed lambda calculus: http://www.cs.nott.ac.uk/~wss/Publications/Tutorial.pdf The quote function in Figure 7 gives the code. Does anyone think this is a direction worth pursuing? I'm not convinced yet. The problem is that there's no best way to handle binding. HOAS is great for some things (you don't have to write substitution), but annoying for others (optimisations or showing code). From your message, I couldn't understand why you want to use monads/do-notation to handle binding. Care to elaborate? All the best, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] The Monad.Reader - Issue 12: SoC Special
I am pleased to announce that a new issue of The Monad.Reader is now available: http://www.haskell.org/haskellwiki/The_Monad.Reader Issue 12 is another Summer of Code special and consists of the following three articles: * Max Bolingbroke Compiler Development Made Easy * Roman Cheplyaka How to Build a Physics Engine * Neil Mitchell Hoogle Overview The Monad.Reader is a quarterly magazine about functional programming. It is less formal than a journal, but more enduring than a wiki page or blog post. If you'd like to write something for the next issue of The Monad.Reader, please get in touch. The deadline for the next issue will be February 13th. Looking forward to your submissions, Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ANN: The Monad.Reader - Issue 11
I am pleased to announce that a new issue of The Monad.Reader is now available: http://www.haskell.org/haskellwiki/The_Monad.Reader Issue 11 consists of the following three articles: * David F. Place How to Refold a Map * Kenneth Knowles First-Order Logic a la Carte * Douglas M. Auclair MonadPlus: What a Super Monad! The Monad.Reader is a quarterly magazine about functional programming. It is less formal than a journal, but a bit more enduring than a wiki page or blog post. If you'd like to write something for the next issue of The Monad.Reader, please get in touch. I haven't fixed the deadline for the next issue just yet. Expect a deadline early 2009. Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Wouter-style expressions
Hi Ron, I've attached a revised file that solves your problem. The solution is actually quite subtle. If you define the class as: class Functor f = Printable f where exprDoc :: f t - Doc you can't make recursive calls to sub-expressions. There is, after all, no reason to believe that t is Printable. The following choice of class is better: class Functor f = Printable f where exprDoc :: Printable g = f (Expr g) - Doc Now when you define the instance for And, you can safely make recursive calls to the list of subchildren. To define the function you want, just add a wrapper to exprDoc: ppExpr : Printable f = Expr f - Doc ppExpr (In t) = exprDoc t All the best, Wouter PS - You may want to add: infixr 6 :+: to you code. It'll save you a lot of parentheses! This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. WouterTest.hs Description: Binary data ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Old editions of The Monad.Reader lost
Almost all? Is that why some are missing? eg. http://www.haskell.org/haskellwiki/The_Monad.Reader/Issue2 omits Impure Thoughts 1 - Thtatic Compilathionth (without a lisp) http://www.haskell.org/tmrwiki/ImpureThoughts_2f1. Philippa did not want her articles published under the new license - that's why they haven't been added. Hope this clears things up, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] The Monad.Reader (11) - Call for Copy
Hi Donnie, Any chance of those issues being moved over still? I'd prefer to read the older issues in pdf format, like the new issues. I have gotten permission from (almost) all the authors to move the content to the new wiki. I've started reformatting everything to the MediaWiki format - for example: http://www.haskell.org/haskellwiki/The_Monad.Reader/Issue2 Unfortunately, progress is pretty slow. The automated tools to convert between MoinMoin and MediaWiki are pretty crummy; reformatting by hand is a fair amount of boring work; I'm writing up my thesis at the moment, so it's not very high on my list of things to do, I'm afraid. If you, or anyone else, would like to help out it would be much appreciated! It's just too much work for me to do by myself. All the best, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] The Monad.Reader (11) - Call for Copy
Put them up as is, let people with haskellwiki accounts reformat them? Good idea. All the old content is now available, although some articles do look fairly horrendous: http://www.haskell.org/haskellwiki/The_Monad.Reader/Issue2 http://www.haskell.org/haskellwiki/The_Monad.Reader/Issue3 http://www.haskell.org/haskellwiki/The_Monad.Reader/Issue4 http://www.haskell.org/haskellwiki/The_Monad.Reader/Issue5 If anyone feels inclined to help reformat them, I'd really appreciate it! Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] The Monad.Reader (11) - Call for Copy
On 7 May 2008, at 19:56, Andrew Coppin wrote: Wouter Swierstra wrote: Please consider writing something for the next issue of The Monad.Reader. You know, I'm actually tempted to do just that... Please do! We've had lots of excellent articles written by people who were just learning Haskell. Sometimes a beginner's perspective can be quite refreshing. Feel free to contact me personally if you have any questions. All the best, Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Using Template Haskell to make type-safe database access
Hi Mads, Not only pictures, but also code can say more than a thousands words. Therefore, I have been implementing a proof of concept. The code is attached in two files. Nice! I have to admit, it's much nicer than I expected it to be. Just out of curiousity, what happens when you write: selectTupleList :: Connection - IO [Integer] instead of selectTupleList :: Connection - IO [(Integer, String, String)] What kind of error message do you get? More specifically, is this error caught statically or dynamically. The only other limitation I can think of, would be in the situation where you don't have compile-time access to the database, e.g. developing software for a client with a database that can only be accessed from their intranet. I have no idea how much of a limitation that is. ok, there is some noise. But at the end of line three it says Unknown column 'duser_id'. Also with a little more work I could properly improve the output. The message is a bit verbose, but if you ignore the noise, it gives pretty good feedback about what's wrong. Good. Perhaps I should explain my own thoughts on the subject a bit better. I got interested in this problem because I think it makes a nice example of dependent types in the real world - you really want to But won't you end up implementing all the functionality of an SQL parser? While possible, it does seem like a huge job. With a TH solution you will safe a lot of work. Yes - but parsing the result of an SQL describe statement is pretty easy. A library that will be a lot more complex to learn than what I am proposing (assuming the developer already knows SQL). Hmm. This is a rather sticky point. One might also argue that Haskell developers have to learn SQL to use the solution you propose. I'm not particularly convinced. Both approaches have their merits I think. Anyhow - nice work! Have you asked Bjorn Bringert what he thinks? He's a really clever and approachable guy - and he knows a lot more about interfacing with databases than I do. Kind regards, Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] The Monad.Reader (11) - Call for Copy
Without reading through every issue ever published, do you have any specific examples of this that I [or anybody else in cafe] could take a look at? The following two articles spring to mind: * Kenneth Hoste wrote a gtk2hs tutorial, after having just started using it: http://www.haskell.org/sitewiki/images/9/9d/TMR-Issue1.pdf * Graham Klyne wrote some notes on learning Haskell: http://www.haskell.org/tmrwiki/LearningHaskellNotes Best, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] The Monad.Reader (11) - Call for Copy
Call for Copy The Monad.Reader - Issue 11 Please consider writing something for the next issue of The Monad.Reader. The deadline for Issue 11 is ** August 1, 2008 ** It doesn't matter if you're a respected researcher or if you have only just started learning Haskell, get your thoughts together and write an article for The Monad.Reader! The Monad.Reader is a electronic magazine about all things Haskell. It is less formal than journal, but more enduring than a wiki-page or blog. There have been a wide variety of articles, including: exciting code fragments, intriguing puzzles, book reviews, tutorials, and even half-baked research ideas. * Submission Details * Get in touch with me if you intend to submit something -- the sooner you let me know what you're up to, the better. Please submit articles for the next issue to me by e-mail (wss at cs.nott.ac.uk). Articles should be written according to the guidelines available from http://www.haskell.org/haskellwiki/The_Monad.Reader Please submit your article in PDF, together with any source files you used. The sources will be released together with the magazine under a BSD license. If you would like to submit an article, but have trouble with LaTeX please let me know and we'll sort something out. All the best, Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Using Template Haskell to make type-safe database access
Hi Mads, I think there may a bit of problem with the approach you suggest: as the type returned by the query is computed by the SQL server (if I understand you correctly), it's very hard to do anything with the result of the query - the Haskell compiler has no idea what type the result has, so you can't do anything with it. I think it makes much more sense to bookkeep type information on the Haskell side. But you can ask the SQL server for the type of the result. In the TH function you could: Thanks for your interesting reply. I'd forgotten that you can do I/O in TH's quotation monad. I agree that you can ask the database server for the type that an SQL expression will return. I don't understand metaprogramming enough to see how computing types with TH effects the rest of your program. Here's a concrete example. Suppose you have a query q that, when performed, will return a table storing integers. I can see how you can ask the SQL server for the type of the query, parse the response, and compute the Haskell type [Int]. I'm not sure how to sum the integers returned by the query *in Haskell* (I know SQL can sum numbers too, but this is a simple example). What would happen when you apply Haskell's sum function to the result of the query? Does TH do enough compile time execution to see that the result is well-typed? Having the SQL server compute types for you does have other drawbacks, I think. For example, suppose your query projects out a field that does not exist. An error like that will only get caught once you ask the server for the type of your SQL expression. If you keep track of the types in Haskell, you can catch these errors earlier; Haskell's type system can pinpoint which part of the query is accessing the wrong field. I feel that if you really care about the type of your queries, you should guarantee type correctness by construction, rather than check it as an afterthought. Of cause it all requires that the database have identical metadata at run and compile -time. Either using the same database or a copy. Though one should note that HaskellDB has the same disadvantage. Actually it do not seem much of a disadvantage it all, as most code accessing SQL databases depends on database metadata anyway. Perhaps I should explain my own thoughts on the subject a bit better. I got interested in this problem because I think it makes a nice example of dependent types in the real world - you really want to compute the *type* of a table based on the *value* of an SQL DESCRIBE. Nicolas Oury and I have written a draft paper describing some of our ideas: http://www.cs.nott.ac.uk/~wss/Publications/ThePowerOfPi.pdf Any comments are very welcome! Our proposal is not as nice as it could be (we would really like to have quotient types), but I hope it hints at what is possible. Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Using Template Haskell to make type-safe database access
Hi Mads, I was wondering if anybody had experimented with using Template Haskell (TH) and ordinary SQL to make type-safe database access? I know HaskellDB, for example, does something quite similar. There's a preprocessor that generates a Haskell file with a Haskell representation of the types of the database's tables. You could of course replace this with a TH function. There are two very nice papers about the design of HaskellDB: http://research.microsoft.com/users/daan/download/papers/dsec.ps http://haskelldb.sourceforge.net/haskelldb.pdf I think there may a bit of problem with the approach you suggest: as the type returned by the query is computed by the SQL server (if I understand you correctly), it's very hard to do anything with the result of the query - the Haskell compiler has no idea what type the result has, so you can't do anything with it. I think it makes much more sense to bookkeep type information on the Haskell side. Hope this helps, Wouter___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: Couple of formal questions
On 1 May 2008, at 16:58, Michael Karcher wrote: Wouter Swierstra [EMAIL PROTECTED] wrote: Hi Creighton, Where could I find a proof that the initial algebras final coalgebras of CPO coincide? I saw this referenced in the Bananas.. paper as a fact, but am not sure where this comes from. I couldn't find the statement you are referring to in Functional Programming with Bananas, Lenses, Envelopes, and Barbed Wire - but I'm not sure if this holds for every CPO. Probably he was referring to the last paragraph of the introduction: Working in CPO has the advantage that the carriers of intial algebras and final co-algebras coincide, thus there is a single data type that comprises both finite and infinite elements. Ah - thanks for pointing that out. According to my more categorically inclined office mates, Marcelo Fiore's thesis is a good reference: https://www.lfcs.inf.ed.ac.uk/reports/94/ECS-LFCS-94-307/ Hope that answers your question, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Couple of formal questions
Hi Creighton, Where could I find a good treatment on data vs. codata the difference between well-founded recursion well-founded(?) corecursion? Bart Jacobs has some good papers on the subject. I found the draft of his book Introduction to Coalgebra quite good: http://www.cs.ru.nl/B.Jacobs/CLG/JacobsCoalgebraIntro.pdf Where could I find a proof that the initial algebras final coalgebras of CPO coincide? I saw this referenced in the Bananas.. paper as a fact, but am not sure where this comes from. I couldn't find the statement you are referring to in Functional Programming with Bananas, Lenses, Envelopes, and Barbed Wire - but I'm not sure if this holds for every CPO. Having data and codata coincide is quite a curious property (I think it's sometimes called algebraic compactness - but don't quote me on this). Hope this helps, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: Stronger STM primitives needed? Or am I just doing it wrong?
On 24 Apr 2008, at 12:02, apfelmus wrote: Sounds good. But I wonder what obscure optimization comes next; can we have a toy-model of STM? I mean, it should be possible to express both the continuation-logging and read-only-fail optimization in terms of type STM a = Maybe a or similar? There's a pure version of STM in the latest version of the IOSpec library: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/IOSpec-0.2 I've used it to test a few non-trivial applications. I should warn you that it does use a very simple stop-the-world semantics - the model may not be fine-grained enough to try out all kinds of optimisations. Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ANN: The Monad.Reader Issue 10
I am pleased to announce that a new issue of The Monad.Reader is now available: http://www.haskell.org/haskellwiki/The_Monad.Reader Issue 10 consists of the following two articles: * Bernie Pope Step inside the GHCi debugger * Matthew Naylor Evaluating Haskell in Haskell The Monad.Reader is a quarterly magazine about functional programming. It is less formal than a journal, but somehow more enduring than a wiki page or blog post. If you'd like to write something for the next issue of The Monad.Reader, please get in touch. I haven't fixed the deadline for the next issue just yet. I hope to send out an official call for copy fairly soon. Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Role based access control via monads or arrows or... something
Any help you can offer for my aching cranium will be _much_ appreciated. You might also be interested in the paper Edwin Brady and Kevin Hammond just submitted to ICFP: http://www.cs.st-andrews.ac.uk/~eb/drafts/icfp08.pdf It describes how to manage resources, in particular locks, in a dependently-typed language. You didn't explicitly mention that it needed to be in Haskell, so it might be worth having a look. Best of luck, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Haskell and GUI
Hi Torsten, If you really only want a simple GUI - I seem to recall you're on a Mac - you might even be able to get away with the AppleScript bindings: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/AppleScript-0.1.3 There are an example of a simple textfield GUI in the examples directory. Hope this helps, Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] The Monad.Reader (10) - Second call for copy
Call for Copy The Monad.Reader - Issue 10 It is not too late to consider writing something for the next issue of The Monad.Reader. The deadline for Issue 10 is ** January 25, 2007 ** It doesn't matter if you're an established academic or if you have only just started learning Haskell, if you have something to say, please write article for The Monad.Reader. The Monad.Reader is a electronic magazine about all things Haskell. It is less-formal than journal, but somehow more enduring than a wiki- page. There have been a wide variety of articles, including: exciting code fragments, intriguing puzzles, book reviews, tutorials, and even half-baked research ideas. * Submission Details * Get in touch with me if you intend to submit something -- the sooner you let me know what you're up to, the better. Please submit articles for the next issue to me by e-mail (wss at cs.nott.ac.uk). Articles should be written according to the guidelines available from http://www.haskell.org/haskellwiki/The_Monad.Reader Please submit your article in PDF, together with any source files you used. The sources will be released together with the magazine under a BSD license. If you would like to submit an article, but have trouble with LaTeX please let me know and we'll sort something out. All the best, Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Old editions of The Monad.Reader lost
On 18 Aug 2007, at 20:10, Henk-Jan van Tuyl wrote: Now that all hawiki pages have been removed, we have lost some valuable information. For example The Monad.Reader; on http:// www.haskell.org/haskellwiki/The_Monad.Reader A few people have been asking what has happened to old editions of the Monad.Reader. I'm happy to announce that almost all authors have agreed to the new Haskellwiki license. I have added the .pdf of the very first issue to the Monad.Reader homepage; Shae Erisson was kind enough to set up a wiki hosting the later issues. http://www.haskell.org/sitewiki/images/9/9d/TMR-Issue1.pdf http://www.haskell.org/tmrwiki/ Both are links can be found on the Monad.Reader homepage. If anyone is inclined to port the MoinMoin content to the Haskellwiki format, I'd be happy to provide them with a list of all the authors that have agreed with the new license. Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] The Monad.Reader - Call for Copy
Call for Copy The Monad.Reader - Issue 10 I would like to welcome articles for the anniversary issue of The Monad.Reader. * The Monad.Reader * The Monad.Reader is an electronic magazine about all things Haskell. It is less-formal than journal, but somehow more enduring than a wiki- page. There have been a wide variety of articles, including: exciting code fragments, intriguing puzzles, book reviews, tutorials, and even half-baked research ideas. * Submission Details * Get in touch with me if you intend to submit something -- the sooner you let me know what you're up to, the better. Please submit articles for the next issue by e-mail (wss at cs.nott.ac.uk) to me before ** January 25, 2008 ** Articles should be written according to the guidelines available from http://www.haskell.org/haskellwiki/The_Monad.Reader Please submit your article in PDF, together with any source files you used. The sources will be released together with the magazine under a BSD license. If you would like to submit an article, but have trouble with LaTeX please let me know and we'll sort something out. Looking forward to your submission, Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ANN: The Monad.Reader Issue 9: SoC special
I am pleased to announce that a new issue of The Monad.Reader is now available: http://www.haskell.org/haskellwiki/The_Monad.Reader Issue 9 is a Summer of Code Special - it consists of three articles from student participants of Google's Summer of Code, describing the projects they worked on: * Thomas Schilling Cabal Configurations * Jason Dagit Darcs Patch Theory * Mathieu Boespflug TaiChi: how to check your types with serenity The Monad.Reader is a quarterly magazine about functional programming. It is less formal than a journal, but somehow more enduring than a wiki page or blog post. If you'd like to write something for the next issue of The Monad.Reader, please get in touch. I haven't fixed the deadline for the next issue just yet. I hope to send out an official call for copy fairly soon. Enjoy! Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Existential types (Was: Type vs TypeClass duality)
In a sense, that's also the reason why stream fusion à la Duncan + Roman + Don uses an existential type data Stream a where Stream :: ∀s. s - (s - Step a s) - Stream a data Step a s = Done | Yield a s | Skip s I thought there was a deeper reason for this, but I might be wrong. You can represent all inductive types by their Church encoding. This basically identifies every inductive type with its fold. You can do the same for terminal coalgebras and coinductive types, but things are a bit different. Suppose we define: data CoFix f = In (f (CoFix f)) Then the unfold producing a value of type CoFix f has type: forall a . (a - f a) - a - CoFix f Now if my logic doesn't fail me, we can also write this as (exists a . (a - f a, a)) - CoFix f Using the co-Church encoding of colists yields the above Stream data type, where f corresponds to the Step data type. (The Skip constructor is a bit of a fix to cope with filter and friends). Best, Wouter___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ANN: The Monad.Reader - Issue 8
I am pleased to announce that the latest issue of The Monad.Reader is now available: http://www.haskell.org/haskellwiki/The_Monad.Reader Issue 8 consists of the following two articles: * Brent Yorgey Generating Multiset Partitions * Conrad Parker Type-Level Instant Insanity The Monad.Reader is a quarterly magazine about functional programming. It is less-formal than journal, but somehow more enduring than a wiki page or blog post. If you'd like to submit something to the next issue of The Monad.Reader, please get in touch. I haven't fixed the deadline for the next issue just yet; I hope to send out an official call for copy in the coming weeks. I'd also like to point out that you can now order TMR apparel from: http://www.cafepress.com/TheMonadReader. Enjoy! Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Learning advice
Hi Chris, I should also point out that the wiki has a lot of really useful links: http://www.haskell.org/haskellwiki/Learning_Haskell Good luck, Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Old editions of The Monad.Reader lost
Dear Henk-Jan, Thanks for pointing this out. I'll try to contact the authors and obtain their permission to move to the new wiki. What is the best way to move content to the new wiki? Surely these articles aren't the first to migrate from hawiki... Any technical advice would be much appreciated. Thanks, Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Sudoku Solver
I'm a little surprised no one's tried a parallel solution yet, actually. We've got an SMP runtime for a reason, people! I hacked up a parallel version of Richard Bird's function pearl solver: http://www.haskell.org/sitewiki/images/1/12/SudokuWss.hs It not really optimized, but there are a few neat tricks there. Rather than prune the search space by rows, boxes, and columns sequentially, it represents the sudoku grid by a [[TVar [Int]]], where every cell has a TVar [Int] corresponding to the list of possible integers that would 'fit' in that cell. When the search space is pruned, we can fork off separate threads to prune by columns, rows, and boxes -- the joy of STM! Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: monads and groups -- instead of loops
On 1 Aug 2007, at 21:23, Greg Meredith wrote: But, along these lines i have been wondering for a while... the monad laws present an alternative categorification of monoid. At least it's alternative to monoidoid. In the spirit of this thought, does anyone know of an expansion of the monad axioms to include an inverse action? Here, i am following an analogy monoidoid : monad :: groupoid : ??? I'm not sure that's the right question. A monoid is a category with one object. A group is a category with one object, where every arrow is an iso. A groupoid is a category (with potentially more than one object), where every arrow is an iso. A monad is monoid in the category of endofunctors. Your groupad, i.e. a group in the category of endofunctors, would boil down to having a monad m that has an unreturn :: m a - a. In the light of things like unsafePerformIO, this is maybe not what you want. More interesting, however, is generalizing a monad to a monoid in functor categories in general, as opposed to just endofunctors. You could call this a monadoid. I've heard Tarmo Uustalu talk about this once (Kan-extensions, coends, *mumble mumble mumble*). Mike Spivey's MSFP paper (http://spivey.oriel.ox.ac.uk/mike/msfp.pdf) mentions A-monads, which is a step in that direction. Anyhow, just a thought. Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Practical Haskell question.
Hi Michael, On 25 Jun 2007, at 06:39, Michael T. Richter wrote: do x - performActionA y - performActionB z - performActionC return $ calculateStuff x y z I don't know about you're exact example, but here's what I'd do. Control.Monad has functions like when, unless, and guard that you can use to check whether the precondition holds. I find an ifM combinator quite useful sometimes: ifM :: Monad m = m Bool - m a - m a - ma ifM cond thenBranch elseBranch = do b - cond if cond then thenBranch else elseBranch If everything checks out, you can then execute your A, B, and C actions. I don't think you really want arrows here. The right idiom is applicative functors (see Control.Applicative). You could then write the above as: calculateStuff $ x * y * z Hope this helps, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] The Monad.Reader - Call for copy
Call for Copy The Monad.Reader - Issue 8 I would like to welcome articles for the next issue of The Monad.Reader. * The Monad.Reader * The Monad.Reader is a electronic magazine about all things Haskell. It is less-formal than journal, but somehow more enduring than a wiki- page. There have been a wide variety of articles, including: exciting code fragments, intriguing puzzles, book reviews, tutorials, and even half-baked research ideas. * Submission Details * Get in touch with me if you intend to submit something -- the sooner you let me know what you're up to, the better. Please submit articles for the next issue by e-mail (wss at cs.nott.ac.uk) to me before ** July 27, 2007 ** Articles should be written according to the guidelines available from http://www.haskell.org/haskellwiki/The_Monad.Reader Please submit your article in PDF, together with any source files you used. The sources will be released together with the magazine under a BSD license. If you would like to submit an article, but have trouble with LaTeX please let me know and we'll sort something out. Looking forward to your submission, Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ANN: The Monad.Reader - Issue7
I am pleased to announce that the latest issue of The Monad.Reader is now available: http://www.haskell.org/haskellwiki/The_Monad.Reader Issue 7 consists of the following four articles: * Matthew Naylor A Recipe for controlling Lego using Lava * Yaron Minsky Caml Trading: Experiences in Functional Programming on Wall Street * Duncan Coutts Book Review: “Programming in Haskell” by Graham Hutton * Dimitry Golubovsky, Neil Mitchell, Matthew Naylor Yhc.Core – from Haskell to Core The Monad.Reader is a quarterly magazine about functional programming. It is less-formal than journal, but somehow more enduring than a wiki page or blog post. If you'd like to submit something to the next issue of The Monad.Reader, please get in touch. I haven't fixed the deadline for the next issue just yet; I hope to send out an official call for copy in the coming weeks. Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: [Haskell] ANN: IOSpec 0.1
Hi Twan, Wouter Swierstra wrote: Test.IOSpecVersion 1.0 Shouldn't that be 0.1? You're right of course. You use Dynamic for the data type in IORefs, this has the unfortunate consequence of needing Typeable constraints. You could try to use unsafeCoerce instead, type Data = () unsafeToData :: a - Data unsafeToData = unsafeCoerce unsafeFromData :: Data - a unsafeFromData = unsafeCoerce I think this should be just as safe as Dynamic, since internally Dynamic uses unsafeCoerce as well. Just steal the details from there. I'm not entirely happy with the unsafeFromDynamic approach I use at the moment. GHC can derive instances of Typeable, so the price you have to pay is not too high. The real problem is that Haskell's type system is not expressive enough to cleanly describe the type of the heap (I know, I could be using HList, but still...). If you're interested, I also have a dependently typed version of the code for IORefs that allows heterogeneous, type-safe, well-scoped pointers. I should probably mention that an ulterior motive for this work is integrating IO in dependently typed languages such as Epigram. It is all, of course, still very much subject to active research. Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: [Haskell] ANN: IOSpec 0.1
Hi Isaac, Moving to Haskell-cafe How does or might this relate to the typeclass-based Restricted IO monad http://article.gmane.org/gmane.comp.lang.haskell.general/14526 ? RIO's technique has the advantage that multiple capabilities can be easily combined in one use of the monad - but this manner of using typeclasses might interfere with how testable it is? (I think that should be okay... Also that this is a really neat project - incremental progress on taming Haskell IO in practice!) Stefan is absolutely right. The RIO, as far as I remember, restricts which parts of the IO monad you use. The same could be said for the Test.IOSpec modules. However, the Test.IOSpec also give you a pure specification of the functions you are using. This is very important if you want to trace/debug an execution of you code - you can see how the state of your machine changes at every step. There's also a bit finer control over how you test your functions: concurrent code is parameterised over the scheduler, for instance. Both these aren't possible with the RIO approach. P.S. why *If you're an ICFP referee, you may want to avoid reading any further* ICFP has a double-blind review process: if I were to submit a paper, I should do so anonymously. The idea behind it all is that if the reviewers don't know who the author of a paper is, they can't be prejudiced. The code I just released is described in a paper submitted to ICFP. All the best, Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: [Haskell] ANN: IOSpec 0.1
Hi Stefan, in the Teletype module, it would probably be better to reflect IOTeletype operations as: data Action a = Finish a | Put Char (Action a) | Get (Char - Action a) That way, there is no need to use (unobservable) laziness. I'm afraid I've lost you. How does this differ from the current definition of IOTeletype? Thanks, Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Circular programming (aka time-travel) resources?
Hi Justin, In The Monad.Reader - Issue 6, that just came out, there is a really interesting article that uses a circular technique to implement an assembly language in Haskell. The technique demonstrated seems fascinating. Can someone point me to more resources on the topic? I believe the classical reference is: Richard Bird: Using Circular Programs to Eliminate Multiple Traversals of Data. (http://www.springerlink.com/content/g74174vvl1861605/) There are a few more recent wiki pages worth checking out: http://www.haskell.org/hawiki/CircularProgramming and the more recent http://www.haskell.org/haskellwiki/Circular_programming Hope this helps, Wouter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ANNOUNCE: The Monad.Reader - Issue 6
Dear all, I pleased to announce that the latest issue of The Monad.Reader is now available: http://www.haskell.org/haskellwiki/The_Monad.Reader Issue 6 consists of the following three articles: * Bernie Pope - Getting a Fix from the Right Fold * Dan Piponi - Adventures in Classical-Land * Russell O'Connor - Assembly: Circular Programming with Recursive do The Monad.Reader is a quarterly magazine about all things Haskell. It is less-formal than journal, but somehow more enduring than a wiki- page or blog post. If you'd like to submit something to the next issue of The Monad.Reader, please get in touch. The preliminary deadline for Issue 7 is March 30, 2007. I will send out an official call for copy in the coming weeks. For now, enjoy Issue 6! Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: ANNOUNCE: The Monad.Reader - Issue 6
On 31 Jan 2007, at 13:39, [EMAIL PROTECTED] wrote: Concerning the strictness of dwBackwards, it suffices to make the pattern match on (ys,xs) irrefutable: snip I probably should have mentioned this in my original announcement, but there's also a discussion page for comments and feedback: http://www.haskell.org/haskellwiki/Talk:The_Monad.Reader All the best, Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe