Version 0.4 of Streaming Component Combinators, or SCC for short, has
been released on Hackage. Get it at
http://hackage.haskell.org/package/scc
There isn't much new high-level functionality compared to the
previous version, but the implementation has been heavily refactored and
the foundations completely replaced.
I'm particularly happy to have found a way to drop the ugly reliance
on Data.Dynamic and to encode the required constraints in the type
system instead. The foundation of streaming components in this version
is the new Control.Concurrent.Coroutine module, whose main export is the monad
transformer Coroutine. It can transform any monad into a suspendable, resumable,
trampoline-style-runnable monad. Coroutines can be nested, which was the
requirement for streaming and the main stumbling block for the implementation.
The solution, worth at least 10 milliOlegs according to my estimate, was to
parameterize the Coroutine with a functor that wraps the coroutine suspension,
and to use nested functors for suspension from nested coroutines. The type system
automatically figures out how many wrappings to apply to each suspension
depending on how many intermediate coroutines it suspends.
In other news is the project's Wiki page at
http://trac.haskell.org/SCC/wiki/. It's still rudimentary, but growing.
All feedback will be appreciated.
Hello,
As I explained in my announcement of 'safer-file-handles', I
discovered a serious lack of expressive power in my 'regions' package.
I have now solved that problem in the way I envisaged by removing the
'resource' parameter from 'RegionT' and using existential
quantification to bring the 'resource' type back at the place I need
it but hidden from the outside.
Now you're able to open multiple types of resources in a single region
which all will be closed automatically on termination of the region.
These are the new releases:
http://hackage.haskell.org/package/regions-0.2http://hackage.haskell.org/package/regions-monadsfd-0.2http://hackage.haskell.org/package/regions-monadstf-0.2.0.1http://hackage.haskell.org/package/usb-safe-0.5http://hackage.haskell.org/package/safer-file-handles-0.2
(Note that in the process I shuffled a bit with the API's. That's one
of the reasons all these are major releases.)
Do you want to see this in action? See 'example.hs' in the following
package that demonstrates opening multiple different types of
resources in a single region. The example extends the example in the
'usb-safe-examples' package by first opening a USB device (my USB
mouse) and a temporary file in the same region. Next the device is
configured, an interface is claimed and an alternate is set. Next some
bytes are read from an endpoint of the device. Finally these bytes are
written to the temporary file.
It's fun to see this in action so do try it out:
darcs get http://code.haskell.org/~basvandijk/code/usb-safe-and-safer-file-handles-ex…
regards and see some of you at FP-NL tomorrow!
Bas
Hello,
I'm happy to announce another member in the 'monadic regions' family:
safer-file-handles:
http://hackage.haskell.org/package/safer-file-handles-0.1
The package uses my 'regions' and 'explicit-iomodes' packages to add
two safety features on top of the regular System.IO file handles and
operations:
* Regional file handles. Files must be opened in a region. When the
region terminates all opened files are automatically closed. The main
advantage of regions is that the handles to the opened files can not
be returned from the region which ensures no I/O with closed files is
possible.
* Explicit IOModes. The regional file handles are parameterized by
the IOMode in which they were opened. All operations on handles
explicitly specify the needed IOMode. This way it is impossible to
read from a write-only handle or write to a read-only handle for
example.
The primary technique used in this package is called "Lightweight
monadic regions" which was invented by Oleg Kiselyov and Chung-chieh
Shan. See:
http://okmij.org/ftp/Haskell/regions.html#light-weight
This technique is implemented in the 'regions' package which is
re-exported from 'safer-file-handles'.
See the 'safer-file-handles-examples' package for examples how to use
this package:
darcs get http://code.haskell.org/~basvandijk/code/safer-file-handles-examples
regards,
Bas
P.S.
While I wrote this message I realized a serious lack of expressive
power of my regions package. Namely that I can't write a program that
opens two different types of resources in the _same_ region. If for
example I want to combine my usb-safe package and this package the
following won't type-check:
openBoth ∷ Device → FilePath → IO ()
openBoth usbDevice filePath = runTopRegion $ do
h1 ← open usbDevice ∷ RegionT Device s IO
(RegionalHandle Device (RegionT Device s IO))
h2 ← openFile filePath ReadMode ∷ RegionT File s IO
(RegionalHandle File (RegionT File s IO))
return ()
The reason, as can be seen from the types of the monadic actions, is
that the monad types differ between the two actions and bind ((>>=) ::
Monad m => m a -> (a -> m b) -> m b) obviously requires them to be the
same. The main problem thus, is that I parameterized the region with
the type of resources.
Note that I'm working on a solution where I remove the resource type
from RegionT. So instead of:
newtype RegionT resource s (pr ∷ * → *) α = RegionT
{ unRegionT ∷ ReaderT (IORef [Opened resource]) pr α }
I will have:
newtype RegionT s (pr ∷ * → *) α = RegionT
{ unRegionT ∷ ReaderT (IORef [SomeOpenedResource]) pr α }
data SomeOpenedResource = ∀ resource. Resource resource
⇒ Some (Opened resource)
Hopefully I will be able to release this fix before FP-NL tomorrow.
**************************************
* *
* HOR 2010 1st CALL FOR ABSTRACTS *
* *
**************************************
5th International Workshop on Higher-Order Rewriting
(Affiliated with RTA'2010)
Wednesday July 14, 2010, Edinburgh, UK
http://hor.pps.jussieu.fr/10/
IMPORTANT DATES:
March 25, 2010 : deadline electronic submission of paper
April 20, 2010 : notification of acceptance of papers
May 17, 2010 : deadline for final version of accepted papers
HOR 2010 is a forum to present work concerning all aspects
of higher-order rewriting. The aim is to provide an informal and
friendly setting to discuss recent work and work in progress.
HOR 2010 is part of FLoC 2010 in Edinburgh.
HOR 2007 was part of RDP 2007 in Paris, France.
HOR 2006 was part of FLoC 2006 in Seattle, USA.
HOR 2004 was part of RDP 2004 in Aachen, Germany.
HOR 2002 was part of FLoC 2002 in Copenhagen, Denmark.
TOPICS of interest include (but are not limited to):
APPLICATIONS: proof checking, theorem proving, generic programming,
declarative programming, program transformation,
automated termination/confluence tools
FOUNDATIONS: pattern matching, unification, strategies, narrowing,
termination, syntactic properties, type theory,
complexity of derivations.
FRAMEWORKS: term rewriting, conditional rewriting, graph rewriting,
net rewriting, comparisons of different frameworks.
IMPLEMENTATION: explicit substitution, rewriting tools,
compilation techniques.
SEMANTICS: semantics of higher-order rewriting, categorical
rewriting, higher-order abstract syntax, games and
rewriting
INVITED SPEAKERS:
Maribel Fernández King's College London, UK
Silvia Ghilezan University of Novi Sad, Serbia
PROGRAM COMMITTEE
Zena Ariola University of Oregon, USA
Frédéric Blanqui INRIA & Tsinghua University, China
Eduardo Bonelli Universidad Nacional de Quilmes,
Argentina, chair
Mariangiola Dezani-Ciancaglini Università di Torino, Italy
Roel de Vrijer Vrije Universiteit, The Netherlands
HOR 2010 SUBMISSIONS:
Abstracts between 2 and 5 pages. As HOR is meant
to be a platform to discuss ongoing research we
are also interested in abstracts describing work
in progress, or problems in higher-order rewriting.
Please use the EasyChair page
http://www.easychair.org/conferences/?conf=hor2010
to submit or update your paper (updates are always possible before
the deadline). Please address your questions to the PC chair,
under: ebonelli * gmail.com (where '*' is replaced by '@').
PROCEEDINGS:
The proceedings of HOR 2010 will be made available on the
HOR 2010 web page and copies will be distributed to the participants
at the workshop. Publication of post-workshop proceedings in EPTCS
is under consideration.
STEERING COMMITTEE
Delia Kesner Université Paris 7, France
Femke van Raamsdonk Vrije Universiteit, The Netherlands
LOCAL ARRANGEMENTS:
Venue Coordinator of the local organizing committee of FLoC'2010:
Floris Geerts (fgeerts(a)inf.ed.ac.uk)
Hi all!
This is to remind you that we're organizing ZuriHac, a Haskell
hackathon/get-together, to be held March 19-21 at the Google Office in
Zurich, Switzerland. Lots of people have already registered but we
still have space for more!
If you plan on coming, please register [1] so we can make sure there's
seating for everyone. Registration, travel, lodging and many other
details will soon be available on the ZuriHac wiki [2]. If you have
any questions don't hesitate to drop Christophe or me an email (or
email addresses can be found on the wiki.)
WHEN
Friday March 19 2:30pm to 6:30pm
Saturday March 20 10am to 6pm
Sunday March 21 10am to 6pm
WHERE
We will be in the TechTalk area of the Google Office at
Brandschenkestrasse 110. Please see the wiki [3] for directions.
ORGANIZERS
Johan Tibell
Christophe Poucet
Hope to see you in Zurich!
- The ZuriHac team
[1] http://haskell.org/haskellwiki/ZuriHac/Register
[2] http://haskell.org/haskellwiki/ZuriHac
[3] http://haskell.org/haskellwiki/ZuriHac#Getting_to_the_Google_Office
********************************************************************
Call For Participation
WFLP2010
19th International Workshop on Functional
and (Constraint) Logic Programming
Madrid, Spain, January 17, 2010
http://babel.ls.fi.upm.es/events/wflp2010/
*********
colocated with
Principles of Programming Languages
POPL 2010
http://www.cse.psu.edu/popl/10/
********************************************************************
IMPORTANT DATES
Hotel reservation deadline: December 28, 2009
VENUE
WFLP2010 and all POPL'10 affiliated events will take place at the
Melia Castilla Hotel, Madrid.
REGISTRATION
To register for WFLP2010, follow the link from the POPL 2010 page, at
http://www.cse.psu.edu/popl/10/
SCOPE
The aim of the Workshop on Functional and (Constraint) Logic
Programming is to bring together researchers interested in functional
programming and (constraint) logic programming with special emphasis
on the integration of both paradigms and of other declarative
programming extensions. It promotes the cross-fertilizing exchange of
ideas and experiences among researchers and students from the
different communities interested in the foundations, applications, and
combinations of high-level declarative programming languages and
related areas.
INVITED SPEAKER
Mariangiola Dezani (University of Torino, Italy)
ACCEPTED PAPERS
Transforming Functional Logic Programs into Monadic Functional Programs
Bernd Brassel, Sebastian Fischer, Michael Hanus and Fabian Reck
Mixed-level Embedding and JIT Compilation for an Iteratively Staged DSL
George Giorgidze and Henrik Nilsson
An Access Control Language based on Term Rewriting and Description Logic
Michele Baggi, Demis Ballis and Moreno Falaschi
Lazy and Faithful Assertions for Functional Logic Programs
Michael Hanus
Parameterized Models for On-line and Off-line Use
Pieter Wuille and Tom Schrijvers
A Denotational Semantics for Curry
Jan Christiansen, Daniel Seidel and Janis Voigtlander
A Declarative Debugger of Missing Answers for Functional and Logic Programming
Rafael del Vado Virseda and Fernando Perez Morente
Efficient and Compositional Higher-Order Streams
Gergely Patai
Bridging the gap between two Concurrent Constraint Languages
Alexei Lescaylle Daudinot and Alicia Villanueva Garcia
Large scale random testing with QuickCheck on MapReduce framework
Shigeru Kusakabe and Yuuki Ikuta
Automated verification of security protocols in tccp
Alexei Lescaylle Daudinot and Alicia Villanueva Garcia
Implementation and Evaluation of a Declarative Debugger for Java
Herbert Kuchen and Christian Hermanns
PROGRAM CHAIR
Julio Marino (Universidad Politecnica de Madrid, Spain)
PROGRAM COMMITTEE
Maria Alpuente (Universidad Politecnica de Valencia, Spain)
Sergio Antoy (Portland State University, USA)
Bernd Brassel (CAU Kiel, Germany)
Olaf Chitil (Univ. of Kent, UK)
Rachid Echahed (CNRS-IMAG, France)
Santiago Escobar (Universidad Politecnica de Valencia, Spain)
Moreno Falaschi (Universita di Siena, Italy)
Murdoch Gabbay (Heriot-Watt University, UK)
Maria Garcia de la Banda (Monash University, Australia)
Victor Gulias (Lambdastream SL, Spain)
Michael Hanus (CAU Kiel, Germany)
Herbert Kuchen (Univ. of Muenster, Germany)
Francisco Lopez-Fraguas (Universidad Complutense de Madrid, Spain)
James Lipton (Wesleyan University, USA)
Mircea Marin (Univ. of Tsukuba, Japan)
Juan Jose Moreno-Navarro (Ministry of Science & Innovation, Spain)
Brigitte Pientka (McGill University, Canada)