[Haskell-cafe] ICFP 2012: Call for participation

2012-07-02 Thread Wouter Swierstra
=
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

2012-06-25 Thread Wouter Swierstra
=
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

2012-01-16 Thread Wouter Swierstra
=

 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

2011-10-21 Thread Wouter Swierstra
  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

2011-07-26 Thread Wouter Swierstra
=
  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)

2011-05-10 Thread Wouter Swierstra
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

2011-03-14 Thread Wouter Swierstra
=

 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

2011-02-08 Thread Wouter Swierstra
=

   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

2010-12-09 Thread Wouter Swierstra
=

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

2010-10-22 Thread Wouter Swierstra
  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

2010-08-23 Thread Wouter Swierstra
=
   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

2010-08-17 Thread Wouter Swierstra
 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

2010-08-09 Thread Wouter Swierstra
 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

2010-08-02 Thread Wouter Swierstra
=
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

2010-06-04 Thread Wouter Swierstra
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!

2010-04-01 Thread Wouter Swierstra
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!

2010-04-01 Thread Wouter Swierstra
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

2010-03-23 Thread Wouter Swierstra
=

   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

2010-02-24 Thread Wouter Swierstra
=

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

2010-01-04 Thread Wouter Swierstra
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

2009-11-18 Thread Wouter Swierstra
  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

2009-11-10 Thread Wouter Swierstra
=

 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

2009-10-23 Thread Wouter Swierstra

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

2009-10-21 Thread Wouter Swierstra


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?

2009-10-19 Thread Wouter Swierstra

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?

2009-10-08 Thread Wouter Swierstra


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

2009-10-05 Thread Wouter Swierstra
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

2009-10-01 Thread Wouter Swierstra

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

2009-07-29 Thread Wouter Swierstra

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

2009-07-28 Thread Wouter Swierstra

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

2009-07-27 Thread Wouter Swierstra

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

2009-06-07 Thread Wouter Swierstra

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?

2009-06-03 Thread Wouter Swierstra


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

2009-04-14 Thread Wouter Swierstra



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

2009-04-06 Thread Wouter Swierstra
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

2009-04-01 Thread Wouter Swierstra
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

2009-03-31 Thread Wouter Swierstra

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

2009-03-18 Thread Wouter Swierstra

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

2009-03-16 Thread Wouter Swierstra
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)

2009-03-16 Thread Wouter Swierstra
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

2009-03-14 Thread Wouter Swierstra
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

2009-02-19 Thread Wouter Swierstra

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

2009-02-19 Thread Wouter Swierstra
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

2009-02-11 Thread Wouter Swierstra
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

2009-02-09 Thread Wouter Swierstra

 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

2009-01-15 Thread Wouter Swierstra


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] ?

2008-12-09 Thread Wouter Swierstra

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?

2008-11-19 Thread Wouter Swierstra

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

2008-11-19 Thread Wouter Swierstra


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

2008-08-25 Thread Wouter Swierstra


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

2008-06-04 Thread Wouter Swierstra

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

2008-05-10 Thread Wouter Swierstra

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

2008-05-09 Thread Wouter Swierstra

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

2008-05-09 Thread Wouter Swierstra

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

2008-05-08 Thread Wouter Swierstra


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

2008-05-08 Thread Wouter Swierstra

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

2008-05-08 Thread Wouter Swierstra
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

2008-05-07 Thread Wouter Swierstra


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

2008-05-06 Thread Wouter Swierstra

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

2008-05-05 Thread Wouter Swierstra

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

2008-05-05 Thread Wouter Swierstra


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

2008-05-01 Thread Wouter Swierstra

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?

2008-04-25 Thread Wouter Swierstra


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

2008-04-08 Thread Wouter Swierstra


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

2008-04-06 Thread Wouter Swierstra


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

2008-01-15 Thread Wouter Swierstra

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

2008-01-11 Thread Wouter Swierstra

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

2007-11-26 Thread Wouter Swierstra


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

2007-11-26 Thread Wouter Swierstra

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

2007-11-19 Thread Wouter Swierstra



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)

2007-10-25 Thread Wouter Swierstra
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

2007-09-10 Thread Wouter Swierstra
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

2007-09-07 Thread Wouter Swierstra

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

2007-08-22 Thread Wouter Swierstra

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

2007-08-18 Thread Wouter Swierstra
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

2007-08-02 Thread Wouter Swierstra


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.

2007-06-25 Thread Wouter Swierstra

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

2007-05-07 Thread Wouter Swierstra


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

2007-04-30 Thread Wouter Swierstra


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

2007-04-25 Thread Wouter Swierstra

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

2007-04-25 Thread Wouter Swierstra

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

2007-04-25 Thread Wouter Swierstra

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?

2007-02-01 Thread Wouter Swierstra

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

2007-01-31 Thread Wouter Swierstra

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

2007-01-31 Thread Wouter Swierstra


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