Re: [Haskell] 6 Assistant professor positions in Utrecht

2018-01-04 Thread Doaitse Swierstra
Ik had ook al aan Johan gemeld dat het woord talented suggereert dat er bij
jullie ook non-talented personen werken. Hij zou het aan laten passen.

Doaitse

Op 4 jan. 2018 09:13 schreef "Swierstra, W.S. (Wouter)" :

> We are currently advertising vacancies for
>
>
>   6 talented Assistant Professors in Information and Computing Sciences
>
>
>   (Tenure Track 0.8 - 1.0 FTE)
>
>
> # Job description
>
> We are searching for motivated, excellent candidates, on the
> Assistant Professor level.  You must have expertise in Computing
> and Information Sciences, preferably in the areas of Information
> Science, Games, Artificial Intelligence or Data
> Science. Excellent candidates with other areas of expertise
> related to our current research groups and teaching programmes
> are also invited to apply.
>
> You have proven ambition and talent for research. As teaching is
> an important and satisfying part of our work, we are searching
> for people with a demonstrable motivation to teach. The
> department is expanding and provides a dynamic work
> environment. If you are excited to actively participate in
> shaping the department, you are very welcome to apply.
>
> Due to our successful teaching programmes and our ambitions in
> research the Department is expanding. We are therefore actively
> searching for 6 talented Research and Teaching Assistant
> Professors in Information and Computing Sciences. Please note
> that positions offered will vary, depending on experience and
> expertise.
>
> # Qualifications
>
> ## Research
>
> * PhD in Computer Science, Information Science or another relevant
> discipline;
> * track record of international publications in leading conferences and
> journals;
> * experience with or good prospects for acquiring external research funds;
> * vision on future research directions in own area of expertise;
> * experience with or readiness to supervise PhD projects;
> * active role in international scientific communities.
>
> ## Teaching
>
> * experience with and enthusiasm for teaching and student supervision;
> * ability to teach in departmental BSc and MSc programmes;
> * well-developed didactic skills;
> * excellent command of the English language;
> * experience with or willingness to use innovative teaching methods
>   and (e-learning) technologies;
> * vision on teaching and your own contribution to teaching.
>
> Please note that we are also interested in candidates with a focus on
> teaching.
>
> ## Leadership:
>
> * play an active and cooperative role in the department and the university;
> * willingness to organize scientific events, such as research seminars or
>   teaching seminars;
> * willingness to partake in departmental committees.
>
> The department finds gender balance specifically and diversity in
> a broader sense very important. In recent procedures we attracted
> a significant number of women (three out of five positions). We
> are very keen on appointing more female scientists and therefore
> strongly encourage qualified women to apply.
>
> # Offer
>
> The candidate will be offered a tenure track position, depending
> on experience (0.8 / 1.0 FTE).
>
> Salary depends on qualifications and experience, and ranges
> between 3,111 and 5,405 euro (scale 10 - 12 Collective Labour
> Agreement Dutch Universities) gross per month for a full-time
> employment.
>
> The salary is supplemented with a holiday bonus of 8% and an
> end-of-year bonus of 8.3% per year. We offer flexible employment
> conditions, working-from-home facilities, partially paid parental
> leave, a pension scheme, and collective insurance schemes.
> Facilities for sports and child care are available on our campus,
> which is only 15 minutes away from the historical city center of
> Utrecht.
>
> We offer you the possibility to develop towards a Basic Teaching
> Qualification, supported with educational development programs
> offered by the University. We also offer candidates the
> possibility to travel to conferences.
>
> # About the organization
>
> A better future for everyone. This ambition motivates our
> scientists in executing their leading research and inspiring
> teaching. At Utrecht University, colleagues from various
> disciplines collaborate intensively towards major societal
> themes. Our focus is on Dynamics of Youth, Institutions for Open
> Societies, Life Sciences and Sustainability.
>
> The city of Utrecht is one of the oldest cities in the
> Netherlands, with a charming old center and an internationally
> oriented culture that is strongly influenced by its century-old
> university. Utrecht city has been consistently ranked as one of
> the most livable cities in the Netherlands.
>
> The Faculty of Science consists of six departments: Biology,
> Pharmaceutical Sciences, Information and Computing Sciences,
> Physics and Astronomy, Chemistry and Mathematics. The Faculty is
> home to 5,900 students and nearly 1,600 staff and is
> internationally renowned for the quality of its research. The
> Facu

[Haskell] Summer school on Applied Functional Programming at Utrecht University; deadline for registration May 15

2013-01-20 Thread Doaitse Swierstra
Again we will teach an "Applied Functional Programming Summer in Haskell" 
school this year at Utrecht University. In the previous four occasions students 
were all very happy with the school and we plan to repeat this success this 
year.

Among the intended audience are prospective master students who gained an 
interest in Functional Programming, e.g. by taking a general course on 
programming languages, and want to learn more about Haskell and its typical 
programming patterns. In previous years we have taught an introductory part 
(advanced bachelor level), an advanced part (beginning master level) and a 
shared part for both groups. Topics covered are, besides some examples of 
domain specific languages, also monads, monad transformers, arrows, parser 
combinators and self-analysing programs, underlying principles, type 
inferencing, etc. 

Half of the course time is spent on a larger programming exercise; you can also 
come with a problem of your own if you want, and get help from the Utrecht 
University Software Technology group in finding the proper Haskell idioms, 
tools and libraries, for solving it.

Important links: 
  -- our own page where we supply information based on questions asked 
http://www.cs.uu.nl/wiki/USCS/
  -- on this page you can find the poster you can print and hang somewhere (why 
not your office door): 

Furthermore we ask for your cooperation to bring this announcement under the 
attention of potential participants.

 Best,
 Doaitse Swierstra, Atze Dijkstra and Johan Jeuring


___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


Re: [Haskell] Compositional Compiler Construction, Oberon0 examples available

2012-08-21 Thread S. Doaitse Swierstra

On Aug 21, 2012, at 13:46 , Heinrich Apfelmus  wrote:

> Doaitse Swierstra wrote:
>> Heinrich Apfelmus wrote:
>>> I have a small question: Last I remember, you've mainly been using
>>> your UUAGC preprocessor to write attribute grammars in Haskell,
>>> especially for UHC. Now that you have first-class attribute
>>> grammars in Haskell ("achievement unlocked"), what do you intend to
>>> do with the preprocessor? How do these two approaches compare at
>>> the moment and where would you like to take them?
>> On the page http://www.cs.uu.nl/wiki/bin/view/Center/CoCoCo there is
>> a link (http://www.fing.edu.uy/~mviera/papers/VSM12.pdf) to a paper
>> we presented at LDTA (one of the ETAPS events) this spring. It
>> explains how UUAGC can be used to generate first class compiler
>> modules.
>> We have also a facility for grouping attributes, so one can trade
>> flexibility for speed. The first class approach stores list of
>> attributes as nested cartesian products, access to which a clever
>> compiler might be able to optimize. This however would correspond  a
>> form of specialisation, so you can hardly say that we have really
>> independent modules; as always global optimisation is never
>> compositional). From the point of view of the first class approach
>> such grouped non-termionals are seen as a single composite
>> non-terminal.
> 
> Ah, I see. So the custom syntax offered by UUAGC is still appreciated, but 
> you now intend to compile it to first-class attribute grammars instead of 
> "bare metal Haskell". Makes sense. Thanks!

It is not much that it is our intention, but it is an easy way to make an 
existing compiler extensible. The main (fixed) part of the compiler is 
constructed in the "old" way from an UUAGC description, and those attributes 
are grouped (and quite a bit more efficient). On top of this you can define 
extra attributes and computations, which plug in to the old system.

Notice that there is a main difference between the two approaches is that the 
uuagc route gives you fast compilers, because we can analyse the grammar, and  
generate efficient tree walking evaluators, whereas the first-class approach 
gives you great flexibility and the possibility to abstract from common 
patterns for which others prefer to get lost in stacks of monads, or find out 
that monads do not work at all since they cannot feed back information into a 
computation easily.


 Doaitse






> 
> 
> Best regards,
> Heinrich Apfelmus
> 
> --
> http://apfelmus.nfshost.com
> 
> 
> ___
> Haskell mailing list
> Haskell@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell


___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


[Haskell] Compositional Compiler Construction, Oberon0 examples available

2012-08-20 Thread Doaitse Swierstra

On Aug 19, 2012, at 10:40 , Heinrich Apfelmus  wrote:

> Doaitse Swierstra wrote:
>> Over the years we have been constructing a collection of Embedded
>> Domain Specific Languages for describing compilers which are
>> assembled from fragments which can be compiled individually. In this
>> way one can gradually ``grow a language'' in a large number of small
>> steps. The technique replaces things like macro extensions or
>> Template Haskell; it has become feasible to just extend the language
>> at hand by providing  extra modules. The nice thing is that existing
>> code does not have to be adapted, nor has to be available nor has to
>> be recompiled.
>> Recently we have been using (and adapting) the frameworks such that
>> we could create an entry in the ldta11 (http://ldta.info/tool.html)
>> tool challenge, where one has to show how one's tools can be used to
>> create a compiler for the Oberon0 language, which is used a a running
>> example in Wirth's compiler construction book.
>> We have uploaded our implementation to hackage at:
>> http://hackage.haskell.org/package/oberon0.
>> More information can be found at the wiki:
>> http://www.cs.uu.nl/wiki/bin/view/Center/CoCoCo
>> You may take a look at the various Gram modules to see how syntax is
>> being defined, and at the various Sem modules to see how we use our
>> first class attribute grammars to implement the static semantics
>> associated with the various tasks of the challenge.
>> We hope you like it, and comments are welcome,
> 
> Awesome!
> 
> I have a small question: Last I remember, you've mainly been using your UUAGC 
> preprocessor to write attribute grammars in Haskell, especially for UHC. Now 
> that you have first-class attribute grammars in Haskell ("achievement 
> unlocked"), what do you intend to do with the preprocessor? How do these two 
> approaches compare at the moment and where would you like to take them?
> 
> 
> Best regards,
> Heinrich Apfelmus

On the page http://www.cs.uu.nl/wiki/bin/view/Center/CoCoCo there is a link 
(http://www.fing.edu.uy/~mviera/papers/VSM12.pdf) to a paper we presented at 
LDTA (one of the ETAPS events) this spring. It explains how UUAGC can be used 
to generate first class compiler modules. 

We have also a facility for grouping attributes, so one can trade flexibility 
for speed. The first class approach stores list of attributes as nested 
cartesian products, access to which a clever compiler might be able to 
optimize. This however would correspond  a form of specialisation, so you can 
hardly say that we have really independent modules; as always global 
optimisation is never compositional). From the point of view of the first class 
approach such grouped non-termionals are seen as a single composite 
non-terminal. 

  Doaitse


> 
> --
> http://apfelmus.nfshost.com
> 
> 
> ___
> Haskell mailing list
> Haskell@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell


___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


[Haskell] Compositional Compiler Construction, Oberon0 examples available

2012-08-19 Thread Doaitse Swierstra

On Aug 19, 2012, at 10:40 , Heinrich Apfelmus  wrote:

> Doaitse Swierstra wrote:
>> Over the years we have been constructing a collection of Embedded
>> Domain Specific Languages for describing compilers which are
>> assembled from fragments which can be compiled individually. In this
>> way one can gradually ``grow a language'' in a large number of small
>> steps. The technique replaces things like macro extensions or
>> Template Haskell; it has become feasible to just extend the language
>> at hand by providing  extra modules. The nice thing is that existing
>> code does not have to be adapted, nor has to be available nor has to
>> be recompiled.
>> Recently we have been using (and adapting) the frameworks such that
>> we could create an entry in the ldta11 (http://ldta.info/tool.html)
>> tool challenge, where one has to show how one's tools can be used to
>> create a compiler for the Oberon0 language, which is used a a running
>> example in Wirth's compiler construction book.
>> We have uploaded our implementation to hackage at:
>> http://hackage.haskell.org/package/oberon0.
>> More information can be found at the wiki:
>> http://www.cs.uu.nl/wiki/bin/view/Center/CoCoCo
>> You may take a look at the various Gram modules to see how syntax is
>> being defined, and at the various Sem modules to see how we use our
>> first class attribute grammars to implement the static semantics
>> associated with the various tasks of the challenge.
>> We hope you like it, and comments are welcome,
> 
> Awesome!
> 
> I have a small question: Last I remember, you've mainly been using your UUAGC 
> preprocessor to write attribute grammars in Haskell, especially for UHC. Now 
> that you have first-class attribute grammars in Haskell ("achievement 
> unlocked"), what do you intend to do with the preprocessor? How do these two 
> approaches compare at the moment and where would you like to take them?
> 
> 
> Best regards,
> Heinrich Apfelmus

On the page http://www.cs.uu.nl/wiki/bin/view/Center/CoCoCo there is a link 
(http://www.fing.edu.uy/~mviera/papers/VSM12.pdf) to a paper we presented at 
LDTA (one of the ETAPS events) this spring. It explains how UUAGC can be used 
to generate first class compiler modules. 

We have also a facility for grouping attributes, so one can trade flexibility 
for speed. The first class approach stores list of attributes as nested 
cartesian products, access to which a clever compiler might be able to 
optimize. This however would correspond  a form of specialisation, so you can 
hardly say that we have really independent modules; as always global 
optimisation is never compositional). From the point of view of the first class 
approach such grouped non-termionals are seen as a single composite 
non-terminal. 

   Doaitse

 
> 
> --
> http://apfelmus.nfshost.com
> 
> 
> ___
> Haskell mailing list
> Haskell@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell


___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


[Haskell] [Announce] Compositional Compiler Construction, Oberon0 examples available

2012-08-16 Thread Doaitse Swierstra
Over the years we have been constructing a collection of Embedded Domain 
Specific Languages for describing compilers which are assembled from fragments 
which can be compiled individuallu. In this way one can gradually ``grow a 
langauge'' in a large number of small steps. The technique replaces things like 
macro extensions or Template Haskell; it has become feasable to just extend the 
language at hand by providing  extra modules. The nice thing is that existing 
code does not have to be adapted, nor has to be available nor has to be 
recompiled.

Recently we have been using (and adapting) the frameworks such that we could 
create an entry in the ldta11 (http://ldta.info/tool.html) tool challenge, 
where one has to show how one's tools can be used to create a compiler for the 
Oberon0 language, which is used a a running example in Wirth's compiler 
construction book.

We have uploaded our implementation to hackage at: 
http://hackage.haskell.org/package/oberon0.

More information can be found at the wiki: 
http://www.cs.uu.nl/wiki/bin/view/Center/CoCoCo

You may take a look at the various Gram modules to see how syntax is being 
defined, and at the various Sem modules to see how we use our first class 
attribute grammars to implement the static semantics associated with the 
various tasks of the challenge.

We hope you like it, and comments are welcome,

Marcos Viera
Doaitse Swierstra









___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


[Haskell] Summer school on Applied Functional Programming at Utrecht University; deadline for registration May 15

2011-04-18 Thread S. Doaitse Swierstra
Again we will teach an "Applied Functional Programming Summer in Haskell" 
school this year at Utrecht University. In the previous two occasions students 
were all very happy with the school and we plan to repeat this success this 
year.

The intended audience are prospective master students who have been in contact 
with Functional Programming, e.g. by taking a general course on programming 
languages, and want to learn more about Haskell and its typical programming 
patterns. In the previous two years we have taught an introductory part 
(advanced bachelor level), an advanced part (beginning master level) and a 
shared part for both groups. Topics covered are, besides some examples of 
domain specific languages, also monads, monad transformers, arrows, parser 
combinators and self-analysing programs, underlying principles, type 
inferencing, etc. Half of the course time is spent on a larger programming 
exercise; you can also come with a problem of your own if you want, and get 
help from the Utrecht University Software Technology group in finding the 
proper Haskell idioms, tools and libraries, for solving it.

Important links: 
  -- our own page where we supply information based on questions asked 
http://www.cs.uu.nl/wiki/bin/view/USCS2011/WebHome
  -- the poster you can print and hang somewhere (why not your office door): 
http://www.cs.uu.nl/wiki/pub/USCS2011/WebHome/USCSpos11.pdf 
  -- the official summerschool site where you can register: 
http://www.utrechtsummerschool.nl/index.php?type=courses&code=H9

Furthermore we ask for your cooperation to bring this announcement under the 
attention of potential participants.

 Best,
 Doaitse Swierstra

PS: apologies if you get this mail more than once


___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


Re: [Haskell] A opportunity to lern (parsing huge binary file)

2011-03-19 Thread S. Doaitse Swierstra
The uu-parsing library support every ata type that is an instance of  
Data.Listlike 
(http://hackage.haskell.org/packages/archive/ListLike/3.0.1/doc/html/Data-ListLike.html#t:ListLike)
 and thus input from Data.Bytestring.Lazy.

A very small starting program can be found below. Note that here we ask for the 
error correction during parsin at the end of the processing; that is probably 
something you do not want to do, unless you only keep a very small part of the 
input in the result. The parsers are online, do not hang on to the input and 
thus you essentially only access and keep the part of the result you are 
interested in.

We find it a great help to have the error correction at hand since it makes it 
a lot easier to debug your parser. Here we just recognise any list of Word8's.

 Doaitse





{-# LANGUAGE MultiParamTypeClasses #-}
module ReadLargeBinaryFile where

import Text.ParserCombinators.UU
import Text.ParserCombinators.UU.BasicInstances
import Data.Word
import Data.ByteString.Lazy (ByteString,readFile)
import Prelude hiding (readFile)


type BS_Parser a = P (Str Word8 ByteString Integer) a

instance IsLocationUpdatedBy Integer Word8 where
   advance pos _ = pos + 1

p:: BS_Parser [Word8]
p =  pList (pSatisfy (const True) (Insertion "" 0 0) )
main filename = doinp <- readFile filename
  let r@(a, errors) =  parse ( (,) <$> p <*> pEnd) 
(createStr 0 inp)
  putStrLn ("--  Result: " ++ show a)
  if null errors then  return ()
 else  do putStr ("--  Correcting steps: 
\n")
  show_errors errors
  putStrLn "-- "
  where show_errors :: (Show a) => [a] -> IO ()
show_errors = sequence_ . (map (putStrLn . show))



interface and that exists for Data. 
On 10 mrt 2011, at 16:36, Skeptic . wrote:

> 
> 
> Hi,
> I finally have an opportunity to learn Haskell (I'm a day-to-day Java 
> programmer, but I'm also at ease with Scheme), parsing a huge (i.e. up to 50 
> go) binary file. The encoding is very stable, but it's not a flat struct 
> array (i.e. it uses flags). 
> Different outputs (i.e. text files) will be needed, some unknown at this 
> time. 
> Sounds to me a perfect "real-world" task to see what Haskell can offer.
> 
> Any suggestions at how to structure the code or on which packages to look at 
> is welcome.
> 
> Thanks. 
> ___
> Haskell mailing list
> Haskell@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell


___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


[Haskell] Ph.D position, Utrecht University, the Netherlands

2009-09-08 Thread S . Doaitse Swierstra

===
Vacancy PhD student on Realizing Optimal Sharing in the Functional  
Language Implementations

Utrecht University,
The Netherlands.
===

Within the Software Technology group of the Information and Computing  
Sciences department of Utrecht University there is a vacancy for a PhD  
student to work on  the efficient implementation of functional  
languages. The position is funded by NWO, the Netherlands Organization  
for Scientific Research.


-
Project summary:

Lambda-calculus and term rewriting are models of computation lying at  
the basis of functional programming languages. Both possess syntactic  
meta-theories based on analyzing rewrite steps. Unfortunately, naive  
implementations are inefficient, since subterms are frequently copied.


To overcome this problem in both theoretical systems and actual  
implementations, duplicate work is avoided by using graph-based term  
representations, in which identical subterms can be (but not always  
are) shared. The question arises whether graph-representations and  
their reductions that are optimal in a theoretical sense can also be  
practical from an implementer's point of view. However, so far it is  
unclear whether nice theoretical ideas combine well with existing  
implementation methods. The overall-goal of this project is to answer  
this question in a back-and-forth communication between theoretical  
concepts and practical realizations. Starting points are the recent  
work on the optimal Lambdascope implementation based on context  
sharing, and the Haskell implementation developed at Utrecht University.


One of the open problems is whether the Lambdascope framework can be  
extended to efficiently represent  sets of mutually recursive  
definitions. Another, whether global program analysis can discover  
where Lambdascope-based approaches solve problems due to insufficient  
sharing. If both questions can be solved, we want to combine  
Lambdascope-based implementations with conventional frameworks, and  
investigate how efficient the resulting implementations become. The  
unique combination of the theoretical depth from the Logic department  
and the implementation skills and compiler infrastructure from the  
Computer Science department make Utrecht University the optimal  
surroundings for such a project.


-
Project leaders are Prof.dr. Doaitse Swierstra and
dr. Vincent van Oostrom (principal investigator).

The project will be executed in close cooperation between
   * the Software Technology group (http://www.cs.uu.nl/wiki/Center)  
of the Information and Computing Sciences department (http://www.cs.uu.nl/ 
)

   * and the Theoretical Philosophy group
(http://www.uu.nl/EN/faculties/Humanities/research/researchinstitutes/zeno/research/theoreticalphilosophy/Pages/default.aspx 
) of the Philosophy department (http://www.phil.uu.nl/),


and between
   * the more practically oriented PhD student and
   * the more theory oriented postdoc.
-

Requirements: Master degree in Computer Science, Logic, or equivalent.  
Good knowledge of functional programming, and several advanced  
computer science techniques. Knowledge of lambda-calculus  
implementations, Haskell, and compiler construction will be useful.  
Both theory and software development based on this should appeal to you.


Terms of employment: the PhD student should start as soon as possible,  
but no later than January 1, 2010.  The position is for four years  
(after one year there will be an evaluation), full-time. Gross salary  
starts with € 2042,-- per month in the first year and increases to €  
2612,-- in the fourth year of employment.  The salary is supplemented  
with a holiday bonus of 8% and an end-of-year bonus of 3%.  In  
addition we offer: a pension scheme, partially paid parental leave,  
facilities for child care, flexible employment conditions in which you  
may trade salary for vacation days or vice versa. Conditions are based  
on the Collective Employment Agreement of the Dutch Universities: http://www.vsnu.nl/Workstudy/Universities-as-employers-/Collective-Labour-Agreement.htm


More information:
  * about the project can be found on 
http://www.cs.uu.nl/wiki/bin/view/Center/OptimalSharing
  * about the Software Technology group on http://www.cs.uu.nl/wiki/Center
  * about the Information and Computing Sciences department on 
http://www.cs.uu.nl/
  * about this vacancy can be obtained from Doaitse Swierstra (doai...@cs.uu.nl 
,  +31 6 4613 6929).


Send your application in pdf (or another non-proprietary format)  to mailto:sciencep...@uu.nl 
	


with a cc to mailto:doai...@cs.uu.nl. on or before Se

[Haskell] ANNOUNCE: uu-parsinglib-2.0.0

2009-04-28 Thread S. Doaitse Swierstra
The new uu-parsinglib package is the first version of the new parsing  
combinator library package from Utrecht University.


Features:
  - online result construction
  - much simpler internals than the combinators in the uulib package,  
because of the availabilty of GADT's and other extensions

which have become available over the last ten years
  - error correction
  - parsing ambiguous grammars (even with online result  
construction), provided one is willing to label a non-terminal as  
ambiguous
  - monadic interface. We solve a problem in the "Polish parsing"  
monadic construct, which could lead to a black hole in combination with

error correction
  - instead of trying to make everything a parameter we rely a bit  
more on the user to provide some basic functions, based on given

canonical implementations
  - no abstract interpretation yet, as found in the original uulib  
package. So if you have large grammars with many alternatives

the uulib package is to be preferred
  - extensive motivation and documentation found in a technical  
report  available from the web page


Cons:
  - the package is likely to change and be extended in the near  
future as we incorprorate more of the uulib library into the new package


Pros:
  - suggestions are welcome

 Doaitse Swierstra





___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


[Haskell] ANNOUNCE: ChristmasTree 0.1 (excuses for second attempt)

2008-12-07 Thread S . Doaitse Swierstra
We are pleased to announce the availability of the package  
"ChristmasTree", which contains the code associated with our paper at  
the last Haskell symposium:


@inproceedings{1411296,
author = {Marcos Viera and S. Doaitse Swierstra and Eelco Lempsink},
title = {Haskell, do you read me?: constructing and composing  
efficient top-down parsers at runtime},
booktitle = {Haskell '08: Proceedings of the first ACM SIGPLAN  
symposium on Haskell},

year = {2008},
isbn = {978-1-60558-064-7},
pages = {63--74},
location = {Victoria, BC, Canada},
doi = {http://doi.acm.org/10.1145/1411286.1411296},
publisher = {ACM},
address = {New York, NY, USA},
}
The name of the package stands for:
   "Changing Haskell's Read Implementation Such That by Manipulating  
Abstract Syntax Trees it Reads Expressions Efficiently"

which, given the time of year, seems appropriate.

Feel free to download and unpack this "present" at what for the Dutch  
is called "Sinterklaasavond" (http://en.wikipedia.org/wiki/Sinterklaas),


  Arthur Baars
  Marcos Viera
  Eelco Lempsink
  Doaitse Swierstra

PS: the package uses our library supporting transformation of typed  
abstract syntax, which we placed in a separate package TTTAS

___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


[Haskell] [Announce] TTTAS (with excuse for second attempt to post)

2008-12-07 Thread S. Doaitse Swierstra


We are pleased to announce the availability of the package "TTTAS",  
which contains the code associated with our paper at the coming TLDI  
workshop:


[EMAIL PROTECTED] BSV09,
author = {Arthur Baars and S. Doaitse Swierstra and Marcos Viera},
title  = {Typed Transformations of Typed Abstract Syntax},
booktitle = {TLDI '09: fourth ACM SIGPLAN Workshop on Types in  
Language Design and Implementation},

year = {2009},
location = {Savannah, Georgia, USA},
publisher = {ACM},
address = {New York, NY, USA},
}

For more information see: http://www.cs.uu.nl/wiki/bin/view/Center/TTTAS

  Arthur Baars
  Marcos Viera
  Doaitse Swierstra


___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


[Haskell] Announce: TTTAS

2008-12-05 Thread S. Doaitse Swierstra
We are pleased to announce the availability of the package "TTTAS",  
which contains the code associated with our paper at the coming TLDI  
workshop:


[EMAIL PROTECTED] BSV09,
author = {Arthur Baars and S. Doaitse Swierstra and Marcos Viera},
title  = {Typed Transformations of Typed Abstract Syntax},
booktitle = {TLDI '09: fourth ACM SIGPLAN Workshop on Types in  
Language Design and Implementation},

year = {2009},
location = {Savannah, Georgia, USA},
publisher = {ACM},
address = {New York, NY, USA},
}

For more information see: http://www.cs.uu.nl/wiki/bin/view/Center/TTTAS

   Arthur Baars
   Marcos Viera
   Doaitse Swierstra
___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


[Haskell] ANNOUNCE: ChristmasTree 0.1

2008-12-05 Thread S. Doaitse Swierstra
We are pleased to announce the availability of the package  
"ChristmasTree", which contains the code associated with our paper at  
the last Haskell symposium:


@inproceedings{1411296,
 author = {Marcos Viera and S. Doaitse Swierstra and Eelco Lempsink},
 title = {Haskell, do you read me?: constructing and composing  
efficient top-down parsers at runtime},
 booktitle = {Haskell '08: Proceedings of the first ACM SIGPLAN  
symposium on Haskell},

 year = {2008},
 isbn = {978-1-60558-064-7},
 pages = {63--74},
 location = {Victoria, BC, Canada},
 doi = {http://doi.acm.org/10.1145/1411286.1411296},
 publisher = {ACM},
 address = {New York, NY, USA},
 }

The name of the package stands for:
 "Changing Haskell's Read Implementation Such That by  
Manipulating Abstract Syntax Trees it Reads Expressions Efficiently"

which, given the time of year, seems appropriate.
Feel free to download and unpack your present at what for the Dutch is  
called "Sinterklaasavond" (http://en.wikipedia.org/wiki/Sinterklaas),


Arthur Baars
Marcos Viera
Eelco Lempsink
Doaitse Swierstra

PS: the package uses our library supporting transformation of typed  
abstract syntax, which we placed in a separate package TTTAS







___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


Re: [Haskell] Software Engineering and Functional Programming (with Haskell)

2007-04-04 Thread Doaitse Swierstra
There have been a series on workshop about the commercial use of  
functional programming. You can find the slides of presentations at:


http://cufp.galois.com/

Some companies even use knowledge of FP to filter out the good  
applicants ;-}} What is your instructor's opinion about that?


 Doaitse Swierstra


On Apr 3, 2007, at 11:40 PM, Paul Johnson wrote:


Sukit Tretriluxana wrote:
Unfortunately my instructor disagrees that the topic is relevant.  
In his response, he mentioned that he will accept the topic only  
if I can prove the following.


Haskell has been around for quite a while.  To convince me,
you'll have to give me references that I can read about
nontrivial examples of significant software systems already
built exclusively with Haskell which includes the software
engineering principles applied in this environment and the
software measures that demonstrate the claims. I
welcome the opportunity for you to provide me with such
in-depth research references to support your viewpoint.
For FP in general you could look at Erlang.  Its an functional  
programming language used for telecom systems.  www.erlang.org has  
a bunch of references, including some very significant software  
systems.


I would suggest broadening your scope to include Erlang, and then  
look at some of the issues with Erlang and the way in which Haskell  
purity helps, like deforestation.  In Erlang you can write a  
function as a pipeline of maps, filters and folds, but it tends to  
be very inefficient because all the intermediate data structures  
have to be created.  In Haskell the compiler can strip out these  
structures because the order of execution does not matter.


I know that Haskell has been used for chip design software.  Simon  
Peyton-Jones' recent paper on the history of Haskell has some  
references.


Paul.
___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


Re: [Haskell] GADT: call for proper terminology

2006-10-11 Thread Doaitse Swierstra

I would prefer notation like:

data  Parser a  | Alt (Parser a) (Parser a)
| Map ( b -> a)  (Parser b)
| Succ a
  Parser (a,b)  | Seq (Parser a) (Parser b)
  Parser String | Lit (String -> Bool)
  Parser [a]| Many (Parser a)

This takes away the noise in the heading of the current GHC notation  
(which is just plain confusing), and enables e.g. grouping of common  
alternatives,


 Doaitse Swierstra




On Oct 11, 2006, at 11:42 PM, Lennart Augustsson wrote:

Well, Kent Petersson and I proposed them as an addition to Haskell  
in 1994, so they are not that new. :)


-- Lennart

http://web.cecs.pdx.edu/~sheard/papers/silly.pdf

On Oct 11, 2006, at 09:47 , Paul Hudak wrote:


Lennart Augustsson wrote:

Well, I think the GADT type definition syntax is the syntax data  
type definitions should have had from the start.  Too bad we  
didn't  realize it 15 years ago.

 -- Lennart


I agree!  In my experience teaching Haskell, the current syntax is  
a bit confusing for newbies, and for years I've been telling  
students, "It really means this: ..." and then I write out a  
syntax more like GADT's.


I also think that if we had adopted this syntax from the  
beginning, GADT's would have been "discovered" far sooner than now.


   -Paul


___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


[Haskell] open assistant professorship at Utrecht University, Software Technology

2006-10-04 Thread Doaitse Swierstra

We have an open  5 year position for an assistant professor.

Current areas of interest are:
  - domain specific embedded languages (especially in the form of  
combinator languages)

  - programming language design and implementation
  - generic programming techniques
  - tools and methods for building complex systems out of a large  
number of artefacts in a controlled way

  - program verification
  - systems for generating informative feedback to users in the case  
of inconsistencies in specifications

  - advanced type systems and their implementation
  - software generation

We strongly believe that the functional programming paradigm is an  
excellent starting point for many new developments in the above  
mentioned areas. In our research we try to identify real problems, to  
find solutions for them, to formalise these, and to build tools in  
order to convey the solutions to the problem holders. Thus we try to  
combine sound principles for solving real-life problems. Given the  
increased pressure on our finances cooperation with industry is of  
growing importance, which will also hold for this position.

Further details can be found at:

http://www.cs.uu.nl/vacatures/en/62612.html

Doaitse Swierstra
___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


Re: [Haskell] Lrc status

2006-07-12 Thread Doaitse Swierstra
Lrc was developed in my group, and was taken home by Joao Saraiva,  
after finishing his Ph.D. thesis.


We are not maintaining it anymore, since we have switched to our new  
attribute grammar system:


http://www.cs.uu.nl/wiki/HUT/AttributeGrammarSystem

For building editing environments we have the experimental Proxima  
system, with which one can build editors in a reasonably easy way,  
although some effort is required:


http://www.cs.uu.nl/wiki/Center/Proxima


My hope is to ever merge them again.

 Doaitse


On Jul 11, 2006, at 9:55 PM, Robert Dockins wrote:

Does anyone have any information about the current status of Lrc?   
Has it ever been released?  Does it live somewhere else now?


The homepage is apparently:  http://www.di.uminho.pt/~jas/Research/ 
LRC/lrc.html


It has a bunch of "coming soon" links, but the page hasn't been  
updated since about 2002.



Rob Dockins

Speak softly and drive a Sherman tank.
Laugh hard; it's a long way to the bank.
  -- TMBG



___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


Re: [Haskell] Trying On Learn Haskell Web Server

2006-03-06 Thread Doaitse Swierstra
You may find some useful code (that is still in need of  
beautification, but on the other hand: it works) at:


http://www.cs.uu.nl/wiki/WebFunctions

Doaitse Swierstra




On 2006 mrt 03, at 20:30, Aditya Siram wrote:


Hi all,
I am former imperative programmer (Java/C/Python) I have recently  
discovered Haskell and read through "Yet Another Haskell  
Tutorial" (the best I have found) and "Tackling The Awkward Squad".  
This paper mentions a Haskell Web Server (HWS) but I am not able to  
find the source.


Where can I find the source? Has this code been updated since the  
paper was written? Can it be compiled and run on a recent version  
of GHC?Hugs? I would like to use it as an example program to teach  
myself Haskell.



Thanks...
Deech


___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


Re: [Haskell] Scripting language: is Haskell a good choice?

2006-01-26 Thread Doaitse Swierstra
You have some way to go. It may be helpful to take a look at our  
course on compiler construction, in which we explain how to use the  
various tools we have built to build compilers and interpreters.


I suggest you download the code and the tools and the lecture notes,  
and start to try to make some of the exercises. Our students somehow  
manage ;-}


http://www.cs.uu.nl/wiki/Ipt/WebHome

Doaitse Swierstra


On 2006 jan 25, at 17:23, Bulat Ziganshin wrote:


Hello Jules,

Wednesday, January 25, 2006, 12:29:48 AM, you wrote:

JJ> I would like to create a scripting language, similar to Ruby,  
Perl and
JJ> Python. Pugs, written in Haskell, is a Perl6 implementation. Is  
Haskell a

JJ> good choice for me?

yes, if you ready to learn many new things. Haskell is very different
from non-FP languages

JJ> I have no experience with Haskell (yet), but I like the
JJ> concept of functional programming. Because Haskell will  
probably be too slow
JJ> for the final implementation, I will have to rewrite it in C or  
maybe D.


i'm not sure that you will not change your plans. may be sometime you
will prefer to rewrite existing Haskell implemetations just to make
your interpreter faster ;)

JJ> Haskell can be very useful as a test/prototype implementation,  
where speed
JJ> is not very important. But will I be able to create a clean,  
and easy to

JJ> understand implementation in Haskell?

if speed is not main goal - definitely yes

JJ> The scripting language will be object
JJ> oriented, and imperative. Is that a problem because Haskell is  
functional,
JJ> or is there be an obvious and nice way to implement an  
imperative scripting

JJ> language?

it's no problem at all

JJ> The language is very dynamic, and the source-tree needs to be  
in memory

JJ> because it is modifiable at run-time.

JJ> Would it be good to do this in Haskell, and port it to C if I  
like the
JJ> implementation, or start in C? Keep the parser/lexer for the  
source code in

JJ> Haskell, but port only the interpreter to C?

yes, you can use C and Haskell together. but C code can't walk Haskell
data structures, so such co-working will need some manual work

JJ> What would be a good place to start? I am reading Yet Another  
Haskell
JJ> tutorial, and I've read the first 6 of two dozen lessons in  
Haskell. What to
JJ> do next, practice/read more/start with the implementation of  
the scripting

JJ> language?

read about parsec library and start :)  this lib already contains
several examples of implementing small FP and imperative languages,
each implemetation is just 5-10 kb in size

--
Best regards,
 Bulatmailto:[EMAIL PROTECTED]



___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


Re: [Haskell] Can anyone help me with partition numbers?

2005-11-25 Thread Doaitse Swierstra

Or (since we started to do someone's  homework anyway)

generate 0 = [[]]
generate n = [x:rest | x <- [1..n], rest <- generate (n-x)]


Doaitse Swierstra



On 2005 nov 25, at 10:29, Tomasz Zielonka wrote:


On Thu, Nov 24, 2005 at 05:52:23PM +0100, Jan van Eijck wrote:

Like so:

generatePs :: (Int,[Int]) -> [[Int]]
generatePs (n,[])   = [take n (repeat 1)]
generatePs (n,(x:xs))   =
  (take n (repeat 1) ++ (x:xs)) : generatePs (pack (x-1) ((n 
+x),xs))

  where
  pack :: Int -> (Int,[Int]) ->(Int,[Int])
  pack 1 (m,xs) = (m,xs)
  pack k (m,xs) = if k > m  then pack (k-1) (m,xs)
  else   pack k (m-k,k:xs)

parts :: Int -> [[Int]]
parts n | n < 1 = error "part: argument <= 0"
| n == 1= [[1]]
| otherwise = generatePs (0,[n])


How about a shorter version?

part :: Integer -> [[Integer]]
part = gen 1
  where
gen m 0 = [[]]
gen m n = [ x:xs | x <- [m..n], xs <- gen x (n - x) ]

Best regards
Tomasz

___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


Re: [Haskell] Haskell based web server?

2005-11-13 Thread Doaitse Swierstra

On:

http://www.cs.uu.nl/wiki/WebFunctions/

you may find some code that could get you started. It includes a  
small webserver based on Simon Marlow's design,


 Doaitse Swierstra


On 2005 nov 13, at 21:29, Tomasz Zielonka wrote:


On Sat, Nov 12, 2005 at 01:10:03PM -0800, Gregory Woodhouse wrote:

I've been reading the article "Tackling the Awkward Squad" by Simon
Peyton Jones (and find it very readable and useful, BTW). I wonder if
the HTTP/1.1 server referred to in this article is available on the
web.


I think you can get it from the fptools CVS repository. You will
find instructions on the GHC site - http://www.haskell.org/ghc/.

It's pretty old and because it uses non-standard extensions, you may
have some problems with newer versions of GHC. If you do, try with
hws-wp (http://www.mdstud.chalmers.se/~md9ms/hws-wp/).


If not, where else can I look for examples of TCP/IP based
server applications written in Haskell?


HTTP client library written in Haskell:
http://www.haskell.org/http/
A chat client written in Haskell:
http://repetae.net/john/computer/ginsu/

Best regards
Tomasz
___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


Re: [Haskell] Latex and Bibtex

2005-04-07 Thread Doaitse Swierstra
At least I can provide you with a bibtex parser written using the  
Utrecht Parser Combinators. As you will see from the text the bibtex  
format is actually quite intricate.

 Doaitse Swierstra

--  $Header:  
/data/cvs-rep/uust/examples/bibtex-parser/BibtexParser.hs,v 1.8  
2002/11/08 12:48:00 uust Exp $
--  $Name:  $ (version name)
{- Fast, Error Correcting Parser Combinators; Version: see Version  
History in same directory.
 - Copyright:  S. Doaitse Swierstra
   Department of Computer Science
   Utrecht University
   P.O. Box 80.089
   3508 TB UTRECHT
   the Netherlands
   [EMAIL PROTECTED]
-}

{- file: bibtex6.hs
   A parser for BibTeX
   using the UU parsing combinators
   Piet van Oostrum, Atze Dijkstra, Doaitse Swierstra (April 22, 2001)
-}
module Main where
import UU.Parsing
import UU.Parsing.CharParser
import UU.Scanner.Position
import System
import Char
showMessage (Msg exp pos action) =
  "\nParse error: " ++  show pos ++ "\n" ++
  actionMessage ++ "\n"
 where actionMessage = case action of
Insert s -> "expecting: " ++ show exp ++
"\nrepaired by inserting " ++ show s
Delete s -> "expecting: " ++ show exp ++
"\nrepaired by deleting unexpected  
symbol " ++ show s
Other m  -> m

parsebib filename -- e.g. parsebib "btxdoc.bib"
  = do res   <- parseFile showMessage pBibData filename
   putStrLn ("\nResult:" ++ show (length res) ++ " bib items were  
parsed")

main
  = do args <- getArgs
   if null args
 then putStr "BibtexParser \n"
 else parsebib (head args)
--  
 
===
-- = DATA TYPES  
==
--  
 
===
type BibParser = AnaParser Input Pair Char Pos

type BibData  = [ BibEntry]
data BibEntry = Entry String  (String, [Field])  -- kind keyword  
fieldlist
	 | Comment   String
	 | Preamble  [ValItem]
	 | StringDef Field
  deriving Show

type Field= (String, [ValItem])
data ValItem  = StringVal String
	 | IntValInt
	 | NameUse   String
		deriving Show
--  
 
===
-- = PARSERS  
 
=
--  
 
===
pBibData= pChainr ((\ entry  _ right -> entry:right) <$> pBibEntry)
  ( [] <$ pList (allChars `pExcept` "@"))

pBibEntry
 =  (   Entry <$ pAt <*> pName   <*> pOpenClose (
pKeyName   <*  pSpec ','
		  <+>  
pListSep_ng pComma pField
<* (pComma  
`opt` ' '))
<|> Comment   <$ pAt <*  pKey "comment"  <*> (  pCurly (pList  
(allChars `pExcept` "}"))
	   <|> pParen (pList  
(allChars `pExcept` ")"))
 )
<|> Preamble  <$ pAt <*  pKey "preamble" <*> pOpenClose pValItems
<|> StringDef <$ pAt <*  pKey "string"   <*> pOpenClose pField
)

pField :: BibParser (String, [ValItem])
pField =  pName <* pSpec '=' <+> pValItems
pValItems  =  pList1Sep (pSpec '#') (   StringVal   <$> pString
	   <|> int_or_name <$> pName
)
  where int_or_name s = if all isDigit s
then IntVal.(read::String->Int) $ s
else NameUse s
--  
 
===
-- = LEXICAL STUFF  
===
--  
 
===
pLAYOUT :: BibParser String
pLAYOUT = pList (EOr [] `setfirsts` pAnySym " \t\r\n")
pSpec c = pSym c  <* pLAYOUT

pParen  p = pPacked (pSpec '(') (pSpec ')') p
pCurly  p = pPacked (pSpec '{') (pSpec '}') p
pOpenClose  p = pParen p <|> pCurly p
pComma= pCostSym  4 ',' ',' <* pLAY

Re: [Haskell] Implicit parallel functional programming

2005-01-20 Thread Doaitse Swierstra
In 1989 my first Ph.D. student. matthijs kuiper, defended his thesis 
"Paralell Attribute Gramar Evaluation". On emight see ag's as a limited 
form of functional programming.

The conclusions were:
 - in many grammars sufficient paralellism can be detected using global 
flow anaysis techniques
 - when building paralell implementations we get nice speedups based on 
the number of processors
 - unfortunately the communication overhead makes you loose speed, so 
in the end you are not much better off, and actually you have
   nice speedups on the introduced overhead, which brings you back 
where you started

Another point to bear in mind is that the Dutch government 20 years ago 
funded a quite large project aiming at parallell implementation of 
functional programms. The main result of this project is a quite good 
sequential implementation of the functional language Clean.

Even further back, in the sixties, Burrough's (yes, the companyy with 
this beautiful Algol-60 based specilaised hardware and operating 
system) has spent a lot of money on trying to construct paralle 
reduction machines (and many others later too, especially in Japan) 
trying to exploit all this implicitly available paralellism. All these 
projects failed beacuse Moore's law overtook their results.

Doaitse Swierstra
On 2005 jan 20, at 3:13, Ben Lippmeier wrote:
I thought the "lazy functional languages are great for implicit 
parallelism" thing died out some time ago - at least as far as running 
the programs on conventional hardware is concerned.

Designing an algorithm that breaks apart a "sequential" lazy program 
into parallel chunks of the appropriate size is **HARD** (with double 
asterixes). The time and space behavior of a lazy program is complex 
enough for the _programmer_ to reason about, let alone an automated 
analysis - which has no knowledge of what the program is actually 
trying to do.

I think a more likely approach lies in the direction of the so called 
"parallel strategies". If you haven't already, I would strongly 
suggest reading: Algorithm + Strategy = Parallelism, 1998, PW Trinder, 
et al.
You can get this paper from Simon Peyton Jones's homepage.

Also, at the end of Hans Wolfgang-Loidl's thesis he develops a 
granularity analysis for a Haskell subset - one of the first steps in 
any kind of implicit parallelism. It's a pretty good effort, but at 
the end of it all it still relies on a pre-existing table of 
information about recursive functions. I think that these kind of 
analyses tend suffer from uncomputability problems more than most.

If you've still got your heart set on implicit parallelism, then 
there's a (very slow) simulator you might want to poke around with. I 
wrote it based around Clem Baker-Finch's "Abstract machine for 
parallel lazy evaluation", which supports fully speculative implicit 
parallelism.

There's a link to it on my homepage at 
http://cs.anu.edu.au/people/Ben.Lippmeier

Keean Schupke wrote:
I have to say I disagree... I feel Haskell is highly suited to 
implicit parallel execution... The key to "implicit" parallelisation 
is that it is implicit - not explicit, so the programmer should feel 
like they are programming a sequential language. If we can assume 
little memory access penalties for threads running on other CPUs 
(shared cache model), it seems to be a matter of putting locks on the 
right structures, and allowing any worker-thread to take the next 
function ready to run from the scheduler.
   Keean.
___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell
___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


new version of Parser Combinators and Syntax Macros's (beta)

2002-03-07 Thread S. Doaitse Swierstra
Title: new version of Parser Combinators and Syntax
Macros's


At:

 http://www.cs.uu.nl/groups/ST/Software/UU_Parsing

you will find the latest/greatest version of our combinators,
that are:

 - faster (faster than Parsec)
 - correct much faster
 - compute results lazily, and produce error messages online in
the IO monad while parsing
   (using unsafeInterleavedIO)
 - are compatible with the syntax macro mechanism we have
implemented (beta):
   http://www.cs.uu.nl/~arthurb/index.html

Doaitse
-- 

-- 

__
S. Doaitse Swierstra, Department of Computer Science, Utrecht
University
 
P.O.Box 80.089, 3508 TB UTRECHT,   the Netherlands
 
Mail: 
mailto:[EMAIL PROTECTED]  
 
WWW:   http://www.cs.uu.nl/

 
tel:    +31 30 253 3962
 
fax:    +31 30 251 3791
 
mobile: +31 6 2880 1680
__



new version of parser combinators

2001-06-23 Thread S. Doaitse Swierstra

We have been working hard on new versions of the Parser Combinators 
and AG system, with the following improvements:

  even better error repairs
  much faster and simpler basic parsing machine
  permutation (of different types) and list combinators
  extensive reporting about repairs made and what was expected
  the possibility to manipulate your own state during parsing
   and result construction, using classed based (like monads) interfaces

As an example of the permutation combinators we parse a permutation 
of three elements:

   1) a list of 'a's
   2) a 'b'
   3) an optional 'c'

which is described by:

permtest :: Parser Char (String, Char, Char)
permtest = permute $ (,,) ~$~ pList (pSym 'a') ~*~ pSym 'b' ~*~ pOptSym 'c'

pOptSym :: Char -> Parser Char Char
pOptSym x = pSym x <|> pSucceed '_'


which we try on several inputs resulting in:

t permtest "acb"
Result:
("a",'b','c')

t permtest "cdaa"
Errors:
Symbol 'd' before 'a' was deleted, because 'b' or ('a')* was expected.
Symbol 'b' was inserted  at end of file, because 'a' or 'b' was expected.
Result:
("aa",'b','c')

t permtest "abd"
Errors:
Symbol 'd' at end of file was deleted, because 'c' or eof was expected.
Result:
("a",'b','_')

t permtest ""
Errors:
Symbol 'b' was inserted  at end of file, because 'c' or 'b' or ('a')* 
was expected.
Result:
("",'b','_')

The manual is still of an earlier version and will be adapted soon. 
As an example of the combinators we provide a parser for bibtex 
files, that returns the repairs made to the erroneous  entries (as 
far as we understand the bibtex format).


   I hope this is useful to you,
Doaitse Swierstra

___
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell



RE: strictness question

2001-03-02 Thread S. Doaitse Swierstra

Thanks for the prompt reply. Hugs apparently is more lazy and 
performs all the matching lazily, and that really makes a difference 
in my case.

  Doaitse

At 8:11 AM -0800 3/2/01, Simon Peyton-Jones wrote:
>Strange.  You don't supply a complete program, so it's hard to
>test. 
>
>Nevertheless, the Haskell Report (Sect 3.12) specifies that
>a let adds a single twiddle.  Thus
>
>   let (x, (y,z)) = e in b
>
>means
>
>   let x = case e of (x,(y,z)) -> x
>y = case e of (x,(y,z)) -> y
>z = case e of (x,(y,z)) -> z
>   in b
>
>And that is what GHC implements.  You get something different if you
>add twiddles inside:
>
>   let (x, ~(y,z)) = e in b
>
>means
>   let x = case e of (x,_) -> x
>y = case e of (_,(y,_)) -> y
>   etc
>
>Adding more twiddles means less eager matching.  I don't know whether
>Hugs implements this.
>
>Simon
>
>| -Original Message-
>| From: S. Doaitse Swierstra [mailto:[EMAIL PROTECTED]]
>| Sent: 01 March 2001 11:26
>| To: [EMAIL PROTECTED]
>| Subject: strictness question
>|
>|
>| I ran into a difference between GHC and Hugs. The following code:
>|
>| f  (P p) ~(P q)   = P (\ k -> \inp -> let (((pv, (qv, r)), m), st) =
>| p (q k) inp
>|in  (((pv qv  , r ), m), st))
>|
>| runs fine with Hugs but blows up with GHC, whereas:
>|
>| f  (P p) ~(P q)   = P (\ k -> \inp -> let ~(~(~(pv, ~(qv, r)), m),
>| st) = p (q k) inp
>|in  (((pv qv  , r ), m), st))
>|
>| runs fine with GHC too.
>|
>|  From the Haskell manual I understand that pattern matching
>| in "let"'s
>| should be done lazily, so the addition of a collection of ~'s should
>| not make a difference. Am I right with  this interpretation?
>|
>| A possible source of this problem may be origination from the smarter
>| GHC optimiser, but in that case the optimiser is not doing its work
>| well.
>|
>| Doaitse Swierstra
>|
>|
>|
>|
>| --
>| __
>| 
>| S. Doaitse Swierstra, Department of Computer Science, Utrecht
>| University
>|P.O.Box 80.089, 3508 TB UTRECHT,   the
>| Netherlands
>|Mail:  mailto:[EMAIL PROTECTED]
>|WWW:   http://www.cs.uu.nl/
>|PGP Public Key:
>http://www.cs.uu.nl/people/doaitse/
>tel:   +31 (30) 253 3962, fax: +31 (30) 2513791
>__________
>
>___
>Haskell mailing list
>[EMAIL PROTECTED]
>http://www.haskell.org/mailman/listinfo/haskell

-- 
__
S. Doaitse Swierstra, Department of Computer Science, Utrecht University
   P.O.Box 80.089, 3508 TB UTRECHT,   the Netherlands
   Mail:  mailto:[EMAIL PROTECTED]
   WWW:   http://www.cs.uu.nl/
   PGP Public Key: http://www.cs.uu.nl/people/doaitse/
   tel:   +31 (30) 253 3962, fax: +31 (30) 2513791
__

___
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell



strictness question

2001-03-02 Thread S. Doaitse Swierstra

I ran into a difference between GHC and Hugs. The following code:

f  (P p) ~(P q)   = P (\ k -> \inp -> let (((pv, (qv, r)), m), st) = 
p (q k) inp
   in  (((pv qv  , r ), m), st))

runs fine with Hugs but blows up with GHC, whereas:

f  (P p) ~(P q)   = P (\ k -> \inp -> let ~(~(~(pv, ~(qv, r)), m), 
st) = p (q k) inp
   in  (((pv qv  , r ), m), st))

runs fine with GHC too.

 From the Haskell manual I understand that pattern matching in "let"'s 
should be done lazily, so the addition of a collection of ~'s should 
not make a difference. Am I right with  this interpretation?

A possible source of this problem may be origination from the smarter 
GHC optimiser, but in that case the optimiser is not doing its work 
well.

Doaitse Swierstra




-- 
__________
S. Doaitse Swierstra, Department of Computer Science, Utrecht University
   P.O.Box 80.089, 3508 TB UTRECHT,   the Netherlands
   Mail:  mailto:[EMAIL PROTECTED]
   WWW:   http://www.cs.uu.nl/
   PGP Public Key: http://www.cs.uu.nl/people/doaitse/
   tel:   +31 (30) 253 3962, fax: +31 (30) 2513791
__

___
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell



Re: GHC for Darwin?

2000-12-21 Thread S. Doaitse Swierstra

At 3:59 PM -0800 12/20/00, Ashley Yakeley wrote:
>Are there any plans to port GHC to Darwin? Darwin is a FreeBSD-variant
>that runs on the PowerPC processor.
><http://www.opensource.apple.com/projects/darwin/>.
>
>I was going to compile it myself before I remembered that compilers do
>platform-specific code-generation. Duh.
>
>--
>Ashley Yakeley, Seattle WA
>
>
>___
>Haskell mailing list
>[EMAIL PROTECTED]
>http://www.haskell.org/mailman/listinfo/haskell

Atze Dijkstra (mailto:[EMAIL PROTECTED]) is working on a port of the GHC 
to MacOS X. He has reached the state where he managed to compile some 
programs (e.g. our attribute grammar system and combinator libraries).

  Doaitse Swierstra
-- 
__________
S. Doaitse Swierstra, Department of Computer Science, Utrecht University
   P.O.Box 80.089, 3508 TB UTRECHT,   the Netherlands
   Mail:  mailto:[EMAIL PROTECTED]
   WWW:   http://www.cs.uu.nl/
   PGP Public Key: http://www.cs.uu.nl/people/doaitse/
   tel:   +31 (30) 253 3962, fax: +31 (30) 2513791
__

___
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell



Re: Extensible data types?

2000-10-20 Thread S. Doaitse Swierstra

It is exactly for reasons like these that we developped our small
attribute grammar system:

http://www.cs.uu.nl/groups/ST/Software/UU_AG/index.html

Doaitse Swiesrtra

At 7:21 AM -0200 10/20/00, José Romildo Malaquias wrote:
>Hello.
>
>I am back with the issue of extensible union types. Basically
>I want to extend a data type with new value constructors.
>Some members of the list pointed me to the paper
>
>"Monad Transformers and Modular Interpreters"
>Sheng Liang, Paul Hudak and Mark Jones
>
>The authors suggest using a type constructor to express
>the disjoint union of two other types:
>
>data Either a b = Left a | Right b
>
>which indeed is part of the Haskell 98 Prelude. Then they introduce
>a subtype relationship using multiparameter type classes:
>
>class SubType sub sup where
>   inj :: sub -> sup   -- injection
>   prj :: sup -> Maybe sub -- projection
>
>The Either data type consructor is then used to express
>the desired subtype relationshipe:
>
>instance SubType a (Either a b) where
>   inj   = Left
>   prj (Left x)  = Just x
>   prj _ = Nothing
>
>instance SubType a b => SubType a (Either c b) where
>   inj   = Right . inj
>   prj (Right x) = prj x
>   prj _ = Nothing
>
>The authors implemented their system in Gofer, due to
>restrictions in the type class system of Haskell.
>But now that there are Haskell extensions to support
>multiparametric type classes, that could be implemented
>in Haskell.
>
>The above code fails to type check due to instances
>overlapping. Hugs gives the following error message:
>
>ERROR "SubType.hs" (line 10): Overlapping instances for class "SubType"
>*** This instance   : SubType a (Either b c)
>*** Overlaps with   : SubType a (Either a b)
>*** Common instance : SubType a (Either a b)
>
>(I did not check Gofer, but is there a way to solve these
>overlapping of instances in it?)
>
>So this is scheme is not going to work with Haskell (extended
>with multiparameter type classes).
>
>I would like hear any comments from the Haskell comunity on
>this subject. Is there a workaround for the overlapping instances?
>
>Regards.
>
>Romildo
>--
>Prof. José Romildo Malaquias <[EMAIL PROTECTED]>
>Departamento de Computação
>Universidade Federal de Ouro Preto
>Brasil
>
>___
>Haskell mailing list
>[EMAIL PROTECTED]
>http://www.haskell.org/mailman/listinfo/haskell

--
__
S. Doaitse Swierstra, Department of Computer Science, Utrecht University
   P.O.Box 80.089, 3508 TB UTRECHT,   the Netherlands
   Mail:  mailto:[EMAIL PROTECTED]
   WWW:   http://www.cs.uu.nl/
   PGP Public Key: http://www.cs.uu.nl/people/doaitse/
   tel:   +31 (30) 253 3962, fax: +31 (30) 2513791
__

___
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell



RE: Parsing include files

2000-08-22 Thread S. Doaitse Swierstra

At 4:03 AM -0700 8/21/00, Julian Seward (Intl Vendor) wrote:
>| Since compilers are one of the areas where everyone agrees that FPLs
>| are the right tool for the job, there should be a standard pattern to
>| deal with include files. Am I missing something essential?
>
>No.  Parsec is an excellent library, but I think there's a
>design flaw in that you can't write your own lexer.  The
>"traditional" thing to do is write a lexer, which can deal
>with include files, etc, as you want.  Parsec would then
>be presented with a list of tokens, rather than a list of
>chars as at present.  Doing this would also avoid the hassle
>of having to remember to skip whitespace here, there and
>everywhere, which cluttered up a parser I wrote recently
>with parsec.
>
>Daan, what do you say?
>
>Other than that, Parsec is really good.  I particularly liked
>the error reporting stuff.
>
>J

You will find a rather complete lexer at:

  http://www.cs.uu.nl/groups/ST/Software/UU_Parsing/#scanner

which does recursive imports etc. An example of its use can be found 
in the attribute grammar system and the small example compiler in the 
same place.

You may want to adapt the scanner to your own needs. It may be 
tempting to try to combine the scanning and the parsing in one go, 
but you may wonder why there are separate tools like YACC and Lex for 
those different tasks.

The lexer was written to be used in conjunction with the error 
correcting library you will find there too, but is in no way tied to 
it and might be used with other libraries just as well. We are about 
to release a new version of our combinators, with a library of 
scanner constructing combinators. If you are prepared to live without 
some documentation I can make the new files available.

  Doaitse Swierstra
-- 
______
S. Doaitse Swierstra, Department of Computer Science, Utrecht University
   P.O.Box 80.089, 3508 TB UTRECHT,   the Netherlands
   Mail:  mailto:[EMAIL PROTECTED]
   WWW:   http://www.cs.uu.nl/
   PGP Public Key: http://www.cs.uu.nl/people/doaitse/
   tel:   +31 (30) 253 3962, fax: +31 (30) 2513791
__




new version of: Fast, Error Correcting Parser Combinators

1999-09-22 Thread Doaitse Swierstra

I have been polishing the ,,"Fast,
Error Correcting Parser Combinators", and as a result they are
now so much faster (for some applications more than three times) that
you may consider downloading the newest version from 


http://www.cs.uu.nl/groups/ST/Software/Parse/


I also fixed a couple of small bugs in the scanner module and added
some "Unsafe and Dirty Combinators" that allow you to interfere with
the correction process. You should probably not use these if you do not
understand the correction process underlying the combinators.


 Doaitse Swierstra


__________

S. Doaitse Swierstra, Department of Computer Science, Utrecht
University

(Prof. Dr)P.O.Box 80.089, 3508 TB UTRECHT,   the
Netherlands

  Mail:  mailto:[EMAIL PROTECTED]   

  WWW:   http://www.cs.uu.nl/

  PGP Public Key:
http://www.cs.uu.nl/people/doaitse/

  tel:   +31 (30) 253 3962, fax: +31 (30) 2513791

__







propaganda 1: Fast, Error Correcting Parsing Combinators

1999-08-23 Thread S. Doaitse Swierstra

,,Fast, Error Correcting
Parsing Combinators


(Updated: Aug-19-1999)


I have placed a completely new set of parser combinators on the net at
http://www.cs.uu.nl/groups/ST/Software/Parse/.


I consider my old LL(1) combinators obsolete by now.



,,Why would you like to use these
Combinators?


Have you always been intrigued by Combinator Parsers because
they allow you to:


   use the abstraction, typing and naming mechanism of Haskell

   create parsers dynamically

   keep life simple by not having to run a separate program in
order to generate a parser

   work with (limited forms of) infinite grammars


but did you not like:


   expensive backtracking implementations

   bad error reporting and error recovery properties

   my previous combinators because they required the grammar to be
LL(1)

   spurious shift-reduce conflicts reported by other parser
generating tools


then why not use my new parsing combinators? (Provided you have access
to the universal type extensions, as present in e.g. Hugs)


My parser combinators perform (without the programmer having to worry)
left-factorisation of the underlying grammar. The only restriction on
the grammar is that it should not be (neither

directly nor indirectly) left-recursive! If it is, you will soon find
out by running out of stack space. A paper describing the combinators
is in the works. Although the title above uses the word

"deterministic", this may be a bit misleading, since it is well known
fact that not all context free languages can be parsed
deterministically.


I hope this software is useful to you. If you have any comments do not
hesitate to contact me.


Doaitse Swierstra mailto:[EMAIL PROTECTED]

___
___

S. Doaitse Swierstra, Department of Computer Science, Utrecht
University

(Prof. Dr)P.O.Box 80.089, 3508 TB UTRECHT,   the
Netherlands

  Mail:  mailto:[EMAIL PROTECTED]

  WWW:   http://www.cs.uu.nl/

  PGP Public Key:
http://www.cs.uu.nl/people/doaitse/

  tel:   +31 (30) 253 3962, fax: +31 (30) 2513791

__












propaganda 2: Fast, Multi Layout Pretty Printing Combinators

1999-08-19 Thread S. Doaitse Swierstra

,,Fast, Multi Layout Pretty
Printing Combinators


(Updated: Aug-19-1999)


I have placed a completely new version of our parser combinators on the
net at http://www.cs.uu.nl/groups/ST/Software/PP/


Why would you like to use these Combinators?


Have you always been intrigued by Pretty Printing Combinators because
they allow you to:


   specify pretty printers easily 

   create pretty printers  dynamically 


but did you not like:


   the fact that alternative layout were difficult to specify

or

   expensive to compute


then why not use our new pretty printing combinators? 



I hope this software is useful to you. If you have any comments do not
hesitate to contact us.


Doaitse Swierstra mailto:[EMAIL PROTECTED],[EMAIL PROTECTED]

__

S. Doaitse Swierstra, Department of Computer Science, Utrecht
University

(Prof. Dr)P.O.Box 80.089, 3508 TB UTRECHT,   the
Netherlands

  Mail:  mailto:[EMAIL PROTECTED]   

  WWW:   http://www.cs.uu.nl/

  PGP Public Key:
http://www.cs.uu.nl/people/doaitse/

  tel:   +31 (30) 253 3962, fax: +31 (30) 2513791

__











propaganda 3: Advaced Functional Programming 3 Proceedings

1999-08-19 Thread S. Doaitse Swierstra

,,AFP3 Proceedings


You may not have noticed, but Springer has published
the proceedings of the AFP3:


,,@book{AFP3,

   author= {Doaitse Swierstra and Pedro Henriques and Jos\'{e}
Oliveira},

   title = {Advanced Functional Programming, Third International
School, AFP'98},

   publisher = {Springer},

   year  = {1999},

   isbn  = {9 783540 662419},

   series= {LNCS},

   number= {1608}

}


I quote from the preface:


In this volume you will find the lecture notes corresponding to the 

presentations given at the 3rd summer school on 

Advanced Functional Programming, held in Braga, Portugal from 

September 12--19, 1998.


This school was preceded by earlier instances in Bastad (1995, Sweden,
LNCS 

925) and Portland (1996, USA, LNCS 1110).  The goal of this series of
schools is 

to bring recent developments in the area of functional programming to 

a large group of students.  The notes are published in order to enable


individuals, small study groups, and lecturers to become acquainted 

with recent work in the fast developing area of functional
programming.


What makes this instance of the school particularly interesting is 

that all lectures introduced useful software, that was used by the 

students in the classes to get hands-on experience with the subjects 

taught.  We urge readers of this volume to download the latest version
of this 

software from the Internet and try to do the exercises from the 

text themselves; the proof of the program is in the typing.


The first lecture, on  ,,Sorting
Morphisms, serves as a gentle 

introduction to the things to come.  If you have always been afraid of


the word ``morphism'', and you have been wondering what catamorphisms,


anamorphisms, hylomorphims and paramorphims were about, this is the 

paper to read first; you will discover that they are merely names for 

recursion patterns that occur over and over again when writing
functional 

programs.  The algorithms in the paper are all about sorting, and
since


you are likely to know those algorithms by heart already, seeing 

them structured and analyzed in a novel way should serve as a
motivation to 

read on with the second lecture.


The second lecture, on ,,Generic
Programming, is almost a book in a 

book.  The notes can be seen as the culminating point of the 

STOP-project, that was sponsored by the Dutch government at the end of


the 80's and the beginning of the 90's; its overall goal was the 

development of a calculational way of deriving programs.  The project 

has provided deeper insight into real functional programming

and into the theory behind many things commonly written by functional

programmers.  One of the main achievements of the project has been

to make people aware of the fact that many algorithms can be described


in a data-independent way.  The PolyP system introduced in these notes


is one of the translations to the Haskell-world of this theoretical 

underpinning.


The third lecture, on ,,Generic
Program Transformation, can also 

be seen as an application of the theory introduced in lecture two.  

Many efficiency-improving program transformations can be 

performed in a mechanical way, and these would not have been possible
without

insight into the correctness of such transformations gained in the 

lecture on Generic Programming.


The fourth lecture, on ,,Designing
and Implementing Combinator 

Languages, introduces an easy to write formalism for writing
down the 

catamorphisms introduced in earlier chapters.  It is shown how quite 

complicated catamorphisms, that at first sight seem rather forbidding 

by making extensive use of higher order domains, can actually be 

developed in a step-wise fashion, using an attribute grammar view; it 

is furthermore shown how to relate this way of programming with 

concepts from the object-oriented world thus making clear what the 

strengths and weaknesses of each world are.


The fifth lecture, titled ,,Using
MetaML: a Staged Programming 

Language, introduces the concept of partial evaluation; it
serves as 

another instance of the quest for ``the most generic of writing 

programs without having to pay too much''.  The staging techniques 

show how costs that were introduced by adding extra levels of 

abstraction, may be moved from run-time to compile-time.


It has been common knowledge to users of modern functional languages 

that the type system can be a great help in shortening programs and 

reducing errors.  In the extreme one might see a type as a predicate 

capturing the properties of any expression with that type.  In the 

sixth lecture on ,,Cayenne -- Spice
up your Programming with 

Dependent Types it is shown in what direction functional
languages are 

most likely to develop, and what may be expected of the new type
systems to 

b

Re: Int vs Integer

1998-09-10 Thread S. Doaitse Swierstra

At:

http://www.cs.uu.nl/groups/ST/haskell.pdf

you may find a pdf version of the current haskell 1.4 report. You may read
and browse through it with the Acrobat redaer. Some of you might find this
more pleasing than the html version,

  Doaitse Swierstra

--
PLEASE NOTE THAT THE DOMAIN NAME ruu HAS BEEN CHANGED TO uu

I HONESTLY APOLOGIZE FOR THE INCONVENIENCES THIS CAUSES TO YOU, BUT IT HAS
BEEN ENFORCED UPON US BY THE UNIVERSITY BOARD.

The old domain will remain functioning for a long time, but you cannot say
that you have not been warned.
__
S. Doaitse Swierstra, Department of Computer Science, Utrecht University
(Prof. Dr)P.O.Box 80.089, 3508 TB UTRECHT,   the Netherlands
  Mail:  mailto:[EMAIL PROTECTED]
  WWW:   http://www.cs.uu.nl/
  PGP Public Key: http://www.cs.uu.nl/people/doaitse/
  tel:   +31 (30) 253 3962, fax: +31 (30) 2513791
__






Re: Call for parsers

1997-11-15 Thread Doaitse Swierstra


You may have a look at my version of the parser combinators, which:

- are deterministic, and thus relatively fast
- correct errors in the input
- have now been tuned with a scanner coming with it
- have been extended with some new useful combinators.
Unfortunately I am now in Bolivia (so do not reply to this address). You
may find a somehat older version through my home page at Utrecht
University.

I intend to put them, with a small description, on the net, together with a
very small attribute grammar system, and an example mini-compiler.

If you are in urgent need you may contact [EMAIL PROTECTED], for a more or
less complete set of files,

  Doaitse Swierstra































Re: Monads and Linear Logic

1997-09-09 Thread S. Doaitse Swierstra

At 8:08 PM 9/3/97, Patrick Logan wrote:
>I am stretching my imperative brain cells to comprehend(!) monads, and
>now their relationship to linear ("unique" in Clean) objects. I have
>glanced at Philip Wadler's paper, but the semantics are impenetrable
>to me at this point, and I am looking at the issue from a more
>"practical" point of view ("practical" in the sense of "practice",
>"practitioner", not that theory is impractical!).
>
>My impression is that monads and linear objects are used in
>essentially the same way. I have explicitly read how linear objects
>allow the compiler to "garbage collect" them at compile time because
>the compiler knows exactly how they are used. I assume the same can be
>done for monads? Is this done in the good Haskell compilers?

It has gone unnoticed by many that an assignment not only assigns a new
value to a variable, but is at the same time a form of static garbage
collection. The programmer implicitely states explicitely that the old
value is no longer of interest. This is were state-monads and
uniqueness-types coincide.

  Doaitse Swierstra

>
>In general laymen's terms, what are the performance and expressiveness
>issues in comparing monads with linear objects?
>
>Thanks
>--
>Patrick Logan mailto:[EMAIL PROTECTED]
>Voice 503-533-3365Fax   503-629-8556
>Gemstone Systems, Inc http://www.gemstone.com

__
S. Doaitse Swierstra, Department of Computer Science, Utrecht University
(Prof. Dr)P.O.Box 80.089, 3508 TB UTRECHT,   the Netherlands
  email: [EMAIL PROTECTED]
  WWW:   http://www.cs.ruu.nl/
  PGP Public Key: http://www.cs.ruu.nl/people/doaitse/
  tel:   +31 (30) 253 3962, fax: +31 (30) 2513791
__^___^___