[Haskell-cafe] Problem with compilation on MAC OS X

2013-05-30 Thread Simon Thompson

New machine, latest version of the Haskell Platform for 64 bit Mac OS X. In 
trying to build a new version of cabal-install and also of Agda I get variants 
of the same error

  dist/build/autogen/Paths_Agda.hs:21:13: Not in scope: `catch'

any thoughts on what I am doing wrong? 

I have XCode command line tools installed.

Thanks!

Simon T.


Simon Thompson | Professor of Logic and Computation 
School of Computing | University of Kent | Canterbury, CT2 7NF, UK
s.j.thomp...@kent.ac.uk | M +44 7986 085754 | W www.cs.kent.ac.uk/~sjt



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


Re: [Haskell-cafe] Problem with compilation on MAC OS X

2013-05-30 Thread Simon Thompson
Thanks - unfortunately it breaks cabal-install too!

S.


On 30 May 2013, at 13:28, Artyom Kazak artyom.ka...@gmail.com wrote:

 Apparently, Agda has been broken by the recent decision to remove 'catch', 
 which had already been deprecated for some time, from Prelude. You can fix 
 the source yourself, or wait for a new release.
 
 On May 30, 2013 3:04 PM, Simon Thompson s.j.thomp...@kent.ac.uk wrote:
 

Simon Thompson | Professor of Logic and Computation 
School of Computing | University of Kent | Canterbury, CT2 7NF, UK
s.j.thomp...@kent.ac.uk | M +44 7986 085754 | W www.cs.kent.ac.uk/~sjt


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


[Haskell-cafe] Tutorials at Commercial Users of Functional Programming 2013

2013-03-22 Thread Simon Thompson

There's still time to submit a tutorial proposal for Commercial Users of 
Functional Programming in Boston …

  http://cufp.org/cufp2013-call-tutorials

Simon Thompson | Professor of Logic and Computation 
School of Computing | University of Kent | Canterbury, CT2 7NF, UK
s.j.thomp...@kent.ac.uk | M +44 7986 085754 | W www.cs.kent.ac.uk/~sjt



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


[Haskell-cafe] Commercial Users of Functional Programming: Call for tutorials

2013-03-06 Thread Simon Thompson

Commercial Users of Functional Programming

Call for tutorials

Commercial Users of Functional Programming (CUFP) is an annual meeting 
co-located with the International Conference on Functional Programming which 
this year will take place in Boston, MA, USA on 22-24 September 2013. CUFP aims 
to bridge the gap between academia and users applying functional programming in 
practice. CUFP provides high-quality practical tutorials covering
state-of-the-art techniques and tools for functional programming. 

We are seeking proposals for half-day tutorials to be presented during the 
first two days of the meeting, 22 and 23 September, with the main CUFP session 
on 24 September. 

Among the suggested topics for tutorials are:

 - Introductions to functional programming languages: in the past we have had 
introductions to Clojure, Erlang, F#, Haskell, ML, OCaml, Scala, Scheme and 
others.

 - Applying functional programming in particular areas, including the web, 
high-performance computing, finance.

- Tools and techniques supporting state of the art functional programming.

Tutorial proposals should address the following points

 - Title
 - Abstract (about 100 words)
 - Goals: by the end of this tutorial you will be able to … 
 - Intended audience: e.g. beginners, those with a working knowledge of X, …
 - Infrastructure required: For example, 
 - will participants need access to a particular system? 
 - can they be expected to have this on a laptop, or does it need to be 
provided by the meeting?

and should be sent by email to 
 
 - Francesco Cesarini: france...@erlang-solutions.com
 - Simon Thompson: s.j.thomp...@kent.ac.uk

by 31 March 2013.
Simon Thompson | Professor of Logic and Computation 
School of Computing | University of Kent | Canterbury, CT2 7NF, UK
s.j.thomp...@kent.ac.uk | M +44 7986 085754 | W www.cs.kent.ac.uk/~sjt



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


Re: [Haskell-cafe] Proving programs

2013-01-02 Thread Simon Thompson
Christopher, there's an introduction to proof for functional programs at

  http://www.cs.kent.ac.uk/people/staff/sjt/Pubs/ProofChapter.pdf

I hope that you find it useful.

Kind regards

Simon


On 1 Jan 2013, at 23:24, Christopher Howard christopher.how...@frigidcode.com 
wrote:

 1. Does this approach need to be adjusted for a functional language, in
 which computation is (at least idealistically) distinct from control flow?
 
 2. How do we approach this for programs that have an input loop (or
 recursion)? E.g., I have an application that reads one line for stdin,
 modifies said line, outputs to stdout, and repeats this process until
 EOF? Should I be thinking of every iteration as a separate program?

Simon Thompson | Professor of Logic and Computation 
School of Computing | University of Kent | Canterbury, CT2 7NF, UK
s.j.thomp...@kent.ac.uk | M +44 7986 085754 | W www.cs.kent.ac.uk/~sjt



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


Re: [Haskell-cafe] Why Kleisli composition is not in the Monad signature?

2012-10-16 Thread Simon Thompson

Not sure I really have anything substantial to contribute, but it's certainly 
true that if you see

  a - m b

as a generalisation of the usual function type, a - b, then return generalises 
the identity and 
kleisli generalises function composition. This makes the types pretty memorable 
(and often the 
definitions too).

Simon


On 16 Oct 2012, at 20:14, David Thomas davidleotho...@gmail.com wrote:

 class Monad m where
  return :: a - m a
  kleisli :: (a - m b) - (b - m c) - (a - m c)

Simon Thompson | Professor of Logic and Computation 
School of Computing | University of Kent | Canterbury, CT2 7NF, UK
s.j.thomp...@kent.ac.uk | M +44 7986 085754 | W www.cs.kent.ac.uk/~sjt


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


[Haskell-cafe] Research Associate in Modelling and Testing using QuickCheck

2012-10-15 Thread Simon Thompson


As a part of the EU-funded project PROWESS we're looking for a postdoctoral 
research associate for 2 years 11 months to work on modelling and testing of 
web services, in the context of property-based testing using QuickCheck. 
PROWESS involves not only Kent, but also the universities of Sheffield and A 
Coruña, Chalmers University in Gothenburg and the Polytechnic University of 
Madrid. Industrial participants include Erlang Solutions Ltd, Quviq AB, 
Interoud and SP, the Technical Research Institute of Sweden.

At the core of PROWESS is property-based testing as implemented in the 
QuickCheck tool, which provides property-based testing (PBT) for Erlang. In 
PBT, instead of describing a system through a series of unit tests, it is 
specified by a set of logical properties, which are then tested on randomly 
generated inputs to the system. For state-based systems, models are described 
as state machines, and the systems are exercised through randomly generate 
paths through the machines. This approach has been used very successfully in a 
number of application areas, most notably in the automotive sector, where 
QuickCheck models are used to test automotive software written in C for its 
conformance to the AUTOSAR standard.

The Kent team on PROWESS will help to deliver the following results.

• A library of common properties for PBT of web services.
• Tools and techniques for extraction of specifications and models from 
existing test suites for web services.
• Tools and techniques to present and assess different competing 
implementations of a specification.
• Approaches to dealing with evolution of properties, models and 
systems.
• An approach to assessing the quality of properties by means of 
mutation of implementations (by analogy with mutation testing).
• Mechanisms by which requirements can be related to other artefacts 
such as properties and models.

The successful applicant should have a doctoral qualification in computer 
science, experience of using functional programming as well as strong core CS 
sills. They should be able to work independently, and also to liaise 
effectively with members of the project both at Kent and at other partners.

More details about the post, and the application procedure, are at

  http://www11.i-grasp.com/fe/tpl_kent01.asp?newms=jjid=37073aid=14243

If you have any questions about the position, or would like to discuss it 
informally, please contact me by email.

Simon Thompson


Simon Thompson | Professor of Logic and Computation 
School of Computing | University of Kent | Canterbury, CT2 7NF, UK
s.j.thomp...@kent.ac.uk | M +44 7986 085754 | W www.cs.kent.ac.uk/~sjt


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


[Haskell-cafe] Two-day Haskell tutorial, Copenhagen, September 13-14

2012-07-24 Thread Simon Thompson


This year CUFP is putting on a series of longer tutorials to introduce 
functional programming languages in depth, and in particular the organisers are 
delighted to announce a TWO DAY Haskell tutorial, taught by leading experts and 
educators Jeremy Gibbons (Oxford) and Simon Marlow (Microsoft Research). 

This two-day tutorial is designed to introduce you to Haskell without assuming 
that you know anything about the language in advance, and will introduce you to 
the underlying ideas and concepts of Haskell as well as giving you hands-on 
experience of programming in Haskell.

So, if you're interested we do hope that you are able to attend, or if not, 
that you'll pass this information on to colleagues and friends who might be 
interested. There's more information and registration instructions at

  http://cufp.org/conference/2012

Hoping to see you there!

Duncan Coutts, Simon Thompson, Michael Sperber
CUFP tutorials organisers



More information …

Abstract

Pure functional programming is about programming with expressions rather than 
actions, data rather than control. Many programs are more naturally expressed 
in this way, and functional programs are often an order of magnitude shorter 
than equivalent imperative programs - just as programs in traditional 
high-level languages like C and Java are typically much shorter and clearer 
than their equivalents in assembly language.

Many exciting ideas in mainstream programming arose first in FP, including 
garbage collection, generics, closures, and list comprehensions. FP is a 
fertile laboratory for language innovation, and familiarity with FP is good 
preparation for future developments in programming. In particular, multicore 
chips and cloud computing architectures are forcing us all into dealing with 
concurrency, and there is good evidence that the breakthroughs here will come 
from FP, with its emphasis on immutability and independence of evaluation order.

Content

This two-day tutorial introduces the essentials of Haskell, a pure lazy 
functional language with a mature compiler, a wealth of libraries, and an 
active community. We will focus particularly on concurrent programming - 
handling multiple interactions at the same time - which is increasingly 
important in a wide range of applications today, from GUI programming to 
server-side web development. There will be a balance between lectures and 
exercises, so that you will be exposed to both the theory and the practice of 
FP.

Day 1 will focus on the basics of FP with Haskell, introducing the concepts 
necessary to get you writing simple programs, including an introduction to 
monads. On Day 2 you will get a little taste of the joys of concurrent 
programming in Haskell. By the end, you will be writing some simple (but real!) 
Concurrent Haskell programs. We will also cover some of the practical aspects 
of day-to-day programming in Haskell, such as working with third-party 
libraries.


Simon Thompson | Professor of Logic and Computation 
School of Computing | University of Kent | Canterbury, CT2 7NF, UK
s.j.thomp...@kent.ac.uk | M +44 7986 085754 | W www.cs.kent.ac.uk/~sjt


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


[Haskell-cafe] Final CFP: 16th Brazilian Symposium on Programming Languages

2012-04-14 Thread Simon Thompson



  CALL FOR PAPERS

  16th BRAZILIAN SYMPOSIUM ON PROGRAMMING LANGUAGES

Natal, Rio Grande do Norte, Brazil
September 24-28, 2012
  http://www.cbsoft.dimap.ufrn.br



IMPORTANT DATES

Paper abstract submission (15 lines): April 27th, 2012 (extended)
Full paper submission: May 4th, 2012 (extended)
Notification of acceptance: June 4th, 2012
Final papers due: June 29th, 2012

INTRODUCTION

The 16th Brazilian Symposium on Programming Languages, SBLP 2012, will be held 
in Natal, Brazil, on September 24-28, 2012. SBLP provides a venue for 
researchers and practitioners interested in the fundamental principles and 
innovations in the design and implementation of programming languages and 
systems.

The symposium will be part of the 3rd Brazilian Conference on Software: Theory 
and Practice, CBSoft 2012, http://www.cbsoft.dimap.ufrn.br, which will host 
four traditional, well-established symposia:

* XXVI Brazilian Symposium on Software Engineering (SBES)
* XVI Brazilian Symposium on Programming Languages (SBLP)
* XV Brazilian Symposium on Formal Methods (SBMF)
* VI Brazilian Symposium on Components, Software Architecture and Software 
Reuse (SBCARS)

SBLP 2012 invites authors to contribute with technical papers related (but not 
limited) to:

* Program generation and transformation, including domain-specific languages 
and model-driven development in the context of programming  languages.

* Programming paradigms and styles, including functional, object-oriented, 
aspect-oriented, scripting languages, real-time, service-oriented, 
multithreaded, parallel, and distributed programming.

* Formal semantics and theoretical foundations, including denotational, 
operational, algebraic and categorical.

* Program analysis and verification, including type systems, static analysis 
and abstract interpretation.

* Programming language design and implementation, including new programming 
models, programming language environments, compilation and interpretation 
techniques.

SUBMISSIONS

Contributions should be written in Portuguese or English. We solicit papers 
that should fall into one of two different categories: full papers, with at 
most 15 pages, or short papers, with at most 5 pages. 

We encourage the submission of short papers reporting on partial results of 
on-going master dissertations or doctoral theses. 

All accepted papers will be published in the conference proceedings distributed 
in a digital media by the CBSOFT organizers.

Full papers submitted in English will be published in a volume of the Lecture 
Notes in Computer Science (LNCS), by Springer, to be distributed in the 
conference. For this reason, all papers must be prepared using the LNCS 
template, available at 
http://www.springer.com/computer/lncs?SGWID=0-164-6-793341-0. 

As in previous editions, a journal special issue, with selected papers from 
accepted contributions, is anticipated. Selected papers from 2003 to 2008 
editions of SBLP were published in special issues of the Journal of Universal 
Computer Science, by Springer. The post-proceedings of SBLP from 2009 to 2011, 
also with selected papers from the conference proceedings, are being edited as 
special issues of Science of Computer Programming, published by Elsevier.

Submissions should be done using SBLP 2012 installation of the EasyChair 
conference management system at 
http://www.easychair.org/conferences/?conf=sblp2012.

GENERAL CO-CHAIRS

NÈlio Cacho, UFRN
Gibeon Aquino, UFRN
Martin Musicante, UFRN

PROGRAMME CHAIRS

Francisco Heron de Carvalho Junior, UFC
Luis Soares Barbosa, Univ. do Minho

PROGRAMME COMMITTEE

* Alberto Pardo, Univ. de La Republica
* Alex Garcia, IME
* Alvaro Freitas Moreira, UFRGS
* AndrÈ Rauber Du Bois, UFPel
* Andre Santos, UFPE
* Carlos Camarao, UFMG
* Christiano Braga, UFF
* Fernando Castor Filho, UFPE
* Fernando Quint„o Pereira, UFMG
* Francisco Heron de Carvalho Junior, UFC (co-chair)
* Joao Saraiva, Universidade do Minho
* Jo„o F. Ferreira, Teesside University
* Jonathan Aldrich, Carnegie Mellon Univ.
* Jose Luiz Fiadeiro, Univ. of Leicester
* Lucilia Figueiredo, UFOP
* Luis Soares Barbosa, Univ. do Minho (co-chair)
* Manuel AntÛnio Martins, Univ. de Aveiro
* Marcelo A. Maia, UFU
* Marcello Bonsangue, Leiden Univ/CWI
* Marcelo d'Amorim, UFPE
* Marco Tulio Valente, UFMG
* Mariza A. S. Bigonha, UFMG
* Martin A. Musicante, UFRN
* Noemi Rodriguez, PUC-Rio
* Paulo Borba, UFPE
* Peter Mosses, Swansea University
* Qiu Zongyang, Peking University
* Rafael Dueire Lins, UFPE
* Renato Cerqueira, PUC-Rio
* Ricardo Massa, UFPE
* Roberto S. Bigonha, UFMG
* Roberto Ierusalimschy, PUC-Rio
* Sandro Rigo, UNICAMP
* Sergio Soares, UFPE
* Simon Thompson, Univ. of Kent
* Varmo Vene, Univ. de Tartu
Simon Thompson | Professor of Logic and Computation 
School of Computing | University of Kent

[Haskell-cafe] Researcher / Lecturer position at the Univ. of Kent

2012-03-02 Thread Simon Thompson


We're advertising a lectureship at Kent, with a special twist: the candidate 
will spend their first three years developing as an independent researcher of 
internationally excellent quality in an area relevant to the School of 
Computing. In other words it's a research position that morphs into a 
traditional lectureship, and is designed to be particularly attractive to 
people at the start of their careers.

The functional programmers at Kent would be particularly keen to recruit 
someone who would work with them!

Online application: 
http://www11.i-grasp.com/fe/tpl_kent01.asp?newms=jjid=36123newlang=1

Closing date: 1/4/12, interviews: 30/4/12

If you have any questions do get in touch.

Regards.

Simon


Simon Thompson | Professor of Logic and Computation 
School of Computing | University of Kent | Canterbury, CT2 7NF, UK
s.j.thomp...@kent.ac.uk | M +44 7986 085754 | W www.cs.kent.ac.uk/~sjt


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


[Haskell-cafe] TFPIE: Trends in Functional Programming in Education 2012

2012-02-03 Thread Simon Thompson

[Apologies for multiple postings, Simon.]



CALL FOR PAPERS/PRESENTATIONS TFPIE 2012
International Workshop on Trends in Functional Programming in Education 2012
June 11 2012
University of St Andrews, Scotland
http://www.cs.ru.nl/P.Achten/TFPIE_2012/TFPIE_2012_home.html


The first International Workshop on Trends in Functional Programming in 
Education, TFPIE 2012, will be co-located with TFP 2012 at the University of St 
Andrews in Scotland. The goal of TFPIE is to gather researchers, professors, 
teachers, and all professionals that use or are interested in the use of 
functional programming in education. TFPIE aims to be a venue where novel 
ideas, classroom-tested ideas, and work in progress on the use of functional 
programming in education are discussed. The one-day workshop will foster a 
spirit of open discussion by having a review process for publication after the 
workshop.

The program chairs of TFPIE 2012 will screen submissions to ensure that all 
presentations are within scope and are of interest to participants. Potential 
presenters are invited to submit an extended abstract (4-6 pages) or an article 
(up to 16 pages). The authors of all accepted presentations will have their 
preprints and their slides made available on the workshop's website/wiki. Any 
visitors to the TFPIE 2012 website/wiki will be able to add comments. This 
includes presenters who may respond to comments and questions as well as 
provide pointers to improvements and follow-up work. After the workshop, the 
program committee will review, using prevailing academic standards, the 
articles accepted for presentation to select the best for publication in 
Electronic Proceedings in Theoretical Computer Science (EPTCS). Articles 
rejected for presentation and all extended abstracts will not be formally 
reviewed by the PC.


TOPICS OF INTEREST

TFPIE 2012 welcomes submissions describing practical techniques used in the 
classroom, tools used and/or developed, and any creative use of functional 
programming (FP) to aid education in or outside Computer Science. Topics of 
interest include, but are not limited to:

FP and beginning CS students
FP in Artificial Intelligence
FP in Robotics
FP and Music
Advanced FP for undergraduates
FP in graduate education
Engaging students in research using FP
FP in Programming Languages
FP in the high school curriculum
FP as a stepping stone to other CS topics
FP and Philosophy


If you are not sure if your work is appropriate for TFPIE 2012, please contact 
the PC chairs by e-mail at: tfpie2...@cs.ru.nl .


Program Committee

Peter Achten, Radboud University Nijmegen
Jost Berthold, University of Copenhagen
Marc Feeley, University of Montreal
Ralf Hinze, University of Oxford
Shriram Krishnamurthi, Brown University
Michel Mauny, ENSTA Paris Tech
James McKinna, UK
Marco T. Morazan, Seton Hall University
Rinus Plasmeijer, Radboud University Nijmegen
Simon Thompson, University of Kent


Important Dates

May 20submission of abstract or article
May 25notification of acceptance   
June 11   TFPIE
July 6submission of formal paper   
September 10  notification of acceptance   
October 1 camera-ready paper


Venue

The University of St Andrews is Scotland's first university and the third 
oldest in the English-speaking world, founded in 1413. Over six centuries it 
has established a reputation as one of Europe's leading and most distinctive 
centers for teaching and research. St Andrews is situated on the east coast of 
Fife, Scotland, UK. The town is approximately 50 miles north-east of Edinburgh, 
14 miles south-east of Dundee, 78 miles south of Aberdeen, and 82 miles east of 
Glasgow making it easily accessible by any means of transportation. Help on 
traveling to St Andrews can be found at: 
http://www.st-andrews.ac.uk/visiting/GettingtoStAndrews/ .


Questions?

If you have any questions, do not hesitate to contact us at: tfpie2...@cs.ru.nl 
.


Simon Thompson | Professor of Logic and Computation 
School of Computing | University of Kent | Canterbury, CT2 7NF, UK
s.j.thomp...@kent.ac.uk | M +44 7986 085754 | W www.cs.kent.ac.uk/~sjt


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


[Haskell-cafe] SBLP - call for papers

2012-01-15 Thread Simon Thompson



 CALL FOR PAPERS

 16th BRAZILIAN SYMPOSIUM ON PROGRAMMING LANGUAGES

   Natal, Rio Grande do Norte, Brazil
   September 24-28, 2012
 http://www.cbsoft.dimap.ufrn.br




IMPORTANT DATES

Paper abstract submission (15 lines): April 20nd, 2012
Full paper submission: April 27th, 2012
Notification of acceptance: May 28th, 2012
Final papers due: June 29th, 2012

INTRODUCTION

The 16th Brazilian Symposium on Programming Languages, SBLP 
2012, will be held in Natal, Brazil, on September 24-28, 
2012. SBLP provides a venue for researchers and 
practitioners interested in the fundamental principles and 
innovations in the design and implementation of programming 
languages and systems.

The symposium will be part of the 3nd Brazilian Conference 
on Software: Theory and Practice, CBSoft 2012, 
http://www.cbsoft.dimap.ufrn.br, which will host four 
traditional, well-established symposia:

* XXVI Brazilian Symposium on Software Engineering (SBES)
* XVI Brazilian Symposium on Programming Languages (SBLP)
* XV Brazilian Symposium on Formal Methods (SBMF)
* VI Brazilian Symposium on Components, Software 
Architecture and Software Reuse (SBCARS)

SBLP 2012 invites authors to contribute with technical 
papers related (but not limited) to:

* Program generation and transformation, including domain-
specific languages and model-driven development in the 
context of programming  languages.

* Programming paradigms and styles, including functional,
object-oriented, aspect-oriented, scripting languages, 
real-time, service-oriented, multithreaded, parallel, and 
distributed programming.

* Formal semantics and theoretical foundations, including 
denotational, operational, algebraic and categorical.

* Program analysis and verification, including type systems, 
static analysis and abstract interpretation.

* Programming language design and implementation, including 
new programming models, programming language environments, 
compilation and interpretation techniques.

SUBMISSIONS

Contributions should be written in Portuguese or English. We 
solicit papers that should fall into one of two different 
categories: full papers, with at most 15 pages, or short 
papers, with at most 5 pages. All papers should be prepared 
using the SBC template. In particular, we encourage the 
submission of short papers reporting on partial results of 
on-going master dissertations or doctoral theses. All 
accepted papers will be published in the conference
proceedings.

Submissions should be done using SBLP 2012 installation of 
the EasyChair conference mangement system at
http://www.easychair.org/conferences/?conf=sblp2012.

As in previous editions, a journal special issue, with 
selected papers from accepted contributions, is anticipated.

GENERAL CO-CHAIRS

Nélio Cacho, UFRN
Gibeon Aquino, UFRN
Martin Musicante, UFRN

PROGRAMME CHAIRS

Francisco Heron de Carvalho Junior, UFC
Luis Soares Barbosa, Univ. do Minho

PROGRAMME COMMITTEE

* Alberto Pardo, Univ. de La Republica
* Alex Garcia, IME
* Alvaro Freitas Moreira, UFRGS
* André Rauber Du Bois, UFPel
* Andre Santos, UFPE
* Carlos Camarao, UFMG
* Christiano Braga, UFF 
* Fernando Castor Filho, UFPE   
* Fernando Quintão Pereira, UFMG
* Francisco Heron de Carvalho Junior, UFC (co-chair)
* Joao Saraiva, Universidade do Minho
* João F. Ferreira, Teeside University
* Jonathan Aldrich, Carnegie Mellon Univ.
* Jose Luiz Fiadeiro, Univ. of Leicester
* Lucilia Figueiredo, UFOP
* Luis Soares Barbosa, Univ. do Minho
* Manuel António Martins, Univ. de Aveiro
* Marcelo A. Maia, UFU
* Marcello Bonsangue, Leiden Univ/CWI
* Marcelo d'Amorim, UFPE
* Marco Tulio Valente, UFMG
* Mariza A. S. Bigonha, UFMG
* Martin A. Musicante, UFRN
* Noemi Rodriguez, PUC-Rio
* Paulo Borba, UFPE
* Peter Mosses, Swansea University
* Qiu Zongyang, Beijing University
* Rafael Dueire Lins, UFPE
* Renato Cerqueira, PUC-Rio
* Ricardo Massa, UFPE
* Roberto S. Bigonha, UFMG
* Roberto Ierusalimschy, PUC-Rio
* Sandro Rigo, UNICAMP
* Sergio Soares, UFPE
* Simon Thompson, Univ. of Kent
* Varmo Vene, Univ. de Tartu


Simon Thompson | Professor of Logic and Computation 
School of Computing | University of Kent | Canterbury, CT2 7NF, UK
s.j.thomp...@kent.ac.uk | M +44 7986 085754 | W www.cs.kent.ac.uk/~sjt


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


[Haskell-cafe] PEPM'12 - second call for participation

2011-12-19 Thread Simon Thompson

ACM SIGPLAN 2012 Workshop on Partial Evaluation and Program Manipulation
  http://www.program-transformation.org/PEPM12

January 23-24, 2012. Philadelphia, PA, USA (co-located with POPL'12)

   Second Call For Participation

   Online registration is open at 
   https://regmaster3.com/2012conf/POPL12/register.php
   Early registration deadline is December 24, 2011

   Program is now available
   http://www.program-transformation.org/PEPM12/Program


The PEPM Symposium/Workshop series brings together researchers
and practitioners working in the broad area of program
transformation, which spans from refactoring, partial evaluation,
supercompilation, fusion and other metaprogramming to model-driven
development, program analyses including termination, inductive
programming, program generation and applications of machine learning 
and probabilistic search. PEPM focuses on techniques, supporting
theory, tools, and applications of the analysis and manipulation of
programs. 

In addition to the presentations of regular research papers, the PEPM
program includes tool demonstrations and `short paper' presentations
of exciting if not fully polished research.

PEPM has established a Best Paper award. The winner will be 
announced at the workshop.


INVITED TALKS

Compiling Math to High Performance Code
  Markus Pueschel (ETH Zuerich, Switzerland)
  http://www.inf.ethz.ch/~markusp/index.html


Specification and verification of meta-programs
  Martin Berger (University of Sussex, UK)
  http://www.informatics.sussex.ac.uk/users/mfb21/

VENUE

The conference is co-located with POPL and will be held at
the Sheraton Society Hill Hotel in Philadelphia's historic district.
For hotel rate details and booking please see the POPL webpage:
  http://www.cse.psu.edu/popl/12/




Simon Thompson | Professor of Logic and Computation 
School of Computing | University of Kent | Canterbury, CT2 7NF, UK
s.j.thomp...@kent.ac.uk | M +44 7986 085754 | W www.cs.kent.ac.uk/~sjt


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


[Haskell-cafe] PEPM'12 Call for participation

2011-11-23 Thread Simon Thompson

ACM SIGPLAN 2012 Workshop on Partial Evaluation and Program Manipulation

  http://www.program-transformation.org/PEPM12

January 23-24, 2012. Philadelphia, PA, USA (co-located with POPL'12)

   Call For Participation

   Online registration is open at 
   https://regmaster3.com/2012conf/POPL12/register.php
   Early registration deadline is December 24, 2011


The PEPM Symposium/Workshop series brings together researchers
and practitioners working in the broad area of program
transformation, which spans from refactoring, partial evaluation,
supercompilation, fusion and other metaprogramming to model-driven
development, program analyses including termination, inductive
programming, program generation and applications of machine learning 
and probabilistic search. PEPM focuses on techniques, supporting
theory, tools, and applications of the analysis and manipulation of
programs. 

In addition to the presentations of regular research papers, the PEPM
program includes tool demonstrations and `short paper' presentations
of exciting if not fully polished research.

PEPM has established a Best Paper award. The winner will be 
announced at the workshop.


INVITED TALKS

Compiling Math to High Performance Code
  Markus Pueschel (ETH Zuerich, Switzerland)
  http://www.inf.ethz.ch/~markusp/index.html


Specification and verification of meta-programs
  Martin Berger (University of Sussex, UK)
  http://www.informatics.sussex.ac.uk/users/mfb21/


ACCEPTED PAPERS

Regular research papers:

Naoki Kobayashi, Kazutaka Matsuda and Ayumi Shinohara. 
Functional Programs as Compressed Data

Kazutaka Matsuda, Kazuhiro Inaba and Keisuke Nakano.
Polynomial-Time Inverse Computation for Accumulative Functions with 
Multiple Data Traversals

Dana N. Xu.
Hybrid Contract Checking via Symbolic Simplification

Susumu Katayama.
An Analytical Inductive Functional Programming System that Avoids 
Unintended Programs

Roberto Giacobazzi, Neil Jones and Isabella Mastroeni.
Obfuscation by Partial Evaluation of Distorted Interpreters

Michael Gorbovitski, Yanhong A. Liu, Scott Stoller and Tom Rothamel.
Composing Transformations for Instrumentation and Optimization

Elvira Albert, Jesus Correas Fernandez, German Puebla and 
Guillermo Roman-Diez.
Incremental Resource Usage Analysis

Takumi Goto and Isao Sasano.
An approach to completing variable names for implicitly typed 
functional languages

Martin Hirzel and Bugra Gedik.
Streams that Compose using Macros that Oblige

Vlad Ureche, Tiark Rompf, Arvind Sujeeth, Hassan Chafi and Martin Odersky.
StagedSAC: A Case Study in Performance-Oriented DSL Development

Markus Degen, Peter Thiemann and Stefan Wehr.
The Interaction of Contracts and Laziness

Surinder Kumar Jain, Chenyi Zhang and Bernhard Scholz.
Translating Flowcharts to Non-Deterministic Languages

Francisco Javier Lopez-Fraguas, Enrique Martin-Martin and 
Juan Rodriguez-Hortala.
Well-typed Narrowing with Extra Variables in Functional-Logic Programming

Geoff Hamilton and Neil Jones.
Superlinear Speedup by Distillation: A Semantic Basis


Short papers:

Jacques Carette and Aaron Stump.
Towards Typing for Small-Step Direct Reflection

Janis Voigtlaender.
Ideas for Connecting Inductive Program Synthesis and Bidirectionalization


Tool demonstration papers:

Edvard K. Karlsen, Einar W. Hoest and Bjarte M. Oestvold.
Finding and fixing Java naming bugs with the Lancelot Eclipse plugin

Adriaan Moors, Tiark Rompf, Philipp Haller and Martin Odersky.
Scala-Virtualized

Elvira Albert, Puri Arenas, Samir Genaim, Miguel Gomez-Zamalloa 
and German Puebla.
COSTABS: A Cost and Termination Analyzer for ABS



Simon Thompson | Professor of Logic and Computation 
School of Computing | University of Kent | Canterbury, CT2 7NF, UK
s.j.thomp...@kent.ac.uk | M +44 7986 085754 | W www.cs.kent.ac.uk/~sjt


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


[Haskell-cafe] PEPM'12 Deadline Extension

2011-10-11 Thread Simon Thompson
.

Regular research papers must not exceed 10 pages in ACM Proceedings
style.  Short papers are up to 4 pages in ACM Proceedings
style. Authors of tool demonstration proposals are expected to present
a live demonstration of the described tool at the workshop (tool
papers should include an additional appendix of up to 6 extra pages
giving the outline, screenshots, examples, etc.  to indicate the
content of the proposed live demo at the workshop).

Important Dates

- Paper submission: Sunday, October 16, 2011, 23:59, GMT
- Author notification: Tue, November 8, 2011
- Workshop: Mon-Tue, January 23-24, 2012

Invited Speakers

- Markus Pueschel (ETH Zurich, Switzerland)
- Martin Berger   (University of Sussex, UK)

Program Chairs

- Oleg Kiselyov (Monterey, CA, USA)
- Simon Thompson (University of Kent, UK)

Program Committee Members

- Emilie Balland (INRIA, France)
- Ewen Denney (NASA Ames Research Center, USA)
- Martin Erwig (Oregon State University, USA)
- Sebastian Fischer (National Institute of Informatics, Japan)
- Lidia Fuentes (Universidad de Malaga, Spain)
- John Gallagher (Roskilde University, Denmark and IMDEA Software, Spain)
- Dave Herman (Mozilla Research, USA)
- Stefan Holdermans (Vector Fabrics, the Netherlands)
- Christian Kaestner (University of Marburg, Germany)
- Emanuel Kitzelmann (International Computer Science Institute, USA)
- Andrei Klimov (Keldysh Institute of Applied Mathematics, Russian Academy of 
Sciences)
- Shin-Cheng Mu (Academia Sinica, Taiwan)
- Alberto Pardo (Universidad de la Repu'blica, Uruguay)
- Kostis Sagonas (Uppsala University, Sweden and National Technical University 
of Athens, Greece)
- Anthony M. Sloane (Macquarie University, Australia)
- Armando Solar-Lezama (MIT, USA)
- Aaron Stump (The University of Iowa, USA)
- Kohei Suenaga (University of Kyoto, Japan)
- Eric Van Wyk (University of Minnesota, USA)
- Kwangkeun Yi (Seoul National University, Korea)



Simon Thompson | Professor of Logic and Computation 
School of Computing | University of Kent | Canterbury, CT2 7NF, UK
s.j.thomp...@kent.ac.uk | M +44 7986 085754 | W www.cs.kent.ac.uk/~sjt



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


Re: [Haskell-cafe] Proving correctness

2011-02-16 Thread Simon Thompson
I did some work years ago about giving a predicate logic treatment of Haskell, 
based on earlier work for Miranda, and formalised some proofs based on this in 
Isabelle. Here are the links:

Logic for Miranda, revisited [from Formal Aspects of Computing, 1995]
  http://www.cs.kent.ac.uk/pubs/1995/63/index.html

Formulating Haskell [from Functional Programming, Glasgow 1992]
  http://www.cs.kent.ac.uk/pubs/1992/123/index.html

Miranda in Isabelle (with Steve Hill) [from Isabelle Workshop, 1995]
  http://www.cs.kent.ac.uk/pubs/1995/209/index.html
  
Regards,

Simon




On 11 Feb 2011, at 11:06, C K Kashyap wrote:

 Hi Folks,
 
 I've come across this a few times - In Haskell, once can prove the 
 correctness of the code - Is this true?
 
 I know that static typing and strong typing of Haskell eliminate a whole 
 class of problems - is that related to the proving correctness?
 Is it about Quickcheck - if so, how is it different from having test sutites 
 in projects using mainstream languages?
 
 
 Regards,
 Kashyap
 ___
 Haskell-Cafe mailing list
 Haskell-Cafe@haskell.org
 http://www.haskell.org/mailman/listinfo/haskell-cafe


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



[Haskell-cafe] SBLP 2011 - call for papers

2010-11-05 Thread Simon Thompson

SBLP 2011: Call For Papers

15th Brazilian Symposium on Programming Languages

Sao Paulo, Brazil
September 26-30, 2010
http://www.each.usp.br/cbsoft2011/

IMPORTANT DATES

Paper abstract submission (15 lines): April 22nd, 2011
Full paper submission: April 29th, 2011
Notification of acceptance: May 30th, 2011
Final papers due: July 29th, 2011

INVITED SPEAKERS

Gary T. Leavens, Univ. of Central Florida
Jose Luis Fiadeiro, Univ. of Leicester 

INTRODUCTION

The 15th Brazilian Symposium on Programming Languages, SBLP 2011, will
be held in Sao Paulo, Brazil, between September 26th and 30th,
2011. SBLP provides a venue for researchers and practitioners
interested in the fundamental principles and innovations in the design
and implementation of programming languages and systems.

The symposium will be part of the 2nd Brazilian Conference on
Software: Theory and Practice, CBSoft 2011,
http://www.each.usp.br/cbsoft2011/, which will host four well-established 
Brazilian symposia: 

* XXV Brazilian Symposium on Software Engineering (SBES)
* XV Brazilian Symposium on Programming Languages (SBLP)
* XIV Brazilian Symposium on Formal Methods (SBMF)
* V Brazilian Symposium on Components, Software Architecture and
Software Reuse (SBCARS)

SBLP 2011 invites authors to contribute with technical
papers related (but not limited) to:

* Program generation and transformation, including domain-specific
 languages and model-driven development in the context of programming
 languages.

* Programming paradigms and styles, including functional,
 object-oriented, aspect-oriented, scripting languages, real-time,
 service-oriented, multithreaded, parallel, and distributed
 programming.

* Formal semantics and theoretical foundations, including
 denotational, operational, algebraic and categorical approaches.

* Program analysis and verification, including type systems, static
 analysis and abstract interpretation.

* Programming language design and implementation, including new
 programming models, programming language environments, compilation
 and interpretation techniques.

SUBMISSIONS

Submissions should be done using SBLP 2011 installation of the
EasyChair conference management system at
http://www.easychair.org/conferences/?conf=sblp2011.

Contributions should be written in Portuguese or English. We solicit
papers that should fall into one of two different categories: full
papers, with at most 15 pages, or short papers, with at most 5
pages. All papers should be prepared using the Easychair
template. (http://www.easychair.org/easychair.zip) In particular, we
encourage the submission of short papers reporting on master
dissertations or doctoral theses at early stages of their
development. All accepted papers will be published in the conference
proceedings.

As in previous editions, a journal special issue, with selected papers
from accepted contributions, is anticipated. From 2003 to 2008 there
were special issues of the Journal of Universal Computer Science,
published by Springer, with the post-proceedings of SBLP. The
post-proceedings of SBLP 2009 and 2010 are being edited as special
issues of Science of Computer Programming, published by Elsevier.

GENERAL CO-CHAIRS

Denise Stringhini FCI, Mackenzie
Alfredo Goldman IME, USP

PROGRAMME CHAIRS

Christiano Braga, UFF
Jose Luiz Fiadeiro, Univ. of Leicester 

PROGRAMME COMMITTEE 

* Alberto Pardo, Univ. de La Republica
* Alex Garcia, IME
* Alvaro Freitas Moreira, UFRGS (TBC)
* Andre Santos, UFPE
* Artur Boronat, Univ. of Leicester
* Carlos Camarao, UFMG
* Christiano Braga, UFF (co-chair)
* Edward Hermann Haeusler, PUC-Rio (TBC)
* Fernando Castor Filho, UFPE
* Fernando Pereira, UFMG
* Francisco Heron de Carvalho Junior, UFC (TBC)
* Giuseppe Castagna, Paris 7 (TBC)
* Jens Palsberg, UCLA
* Joao Saraiva, Universidade do Minho
* Johan Jeuring, Utrecht Univ.
* Jonathan Aldrich, Carnegie Mellon Univ.
* Jose Luiz Fiadeiro, Univ. of Leicester (co-chair)
* Lucilia Figueiredo, UFOP
* Luis Soares Barbosa, Univ. do Minho
* Marcelo A. Maia, UFU
* Marcelo d'Amorim, UFPE
* Marco Tulio Valente, UFMG
* Mariza A. S. Bigonha, UFMG
* Martin A. Musicante, UFRN
* Noemi Rodriguez, PUC-Rio
* Paulo Borba, UFPE (TBC)
* Peter Mosses, Swansea University
* Renato Cerqueira, PUC-Rio
* Ricardo Massa, UFPE
* Roberto S. Bigonha, UFMG (TBC)
* Roberto Ierusalimschy, PUC-Rio
* Sandro Rigo, UNICAMP
* Sergio Soares, UFPE (TBC)
* Sergiu Dascalu, Univ. of Nevada
* Simon Thompson, Univ. of Kent
* Sophia Drossopoulou, Imperial College (TBC)
* Varmo Vene, Univ. de Tartu (TBC)
* Vladimir Di Iorio, UFV (TBC)___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Books for review in the journal of functional programming

2010-10-14 Thread Simon Thompson

Just updated: list of books for review in the journal of functional 
programming, available here:

  http://www.cs.kent.ac.uk/people/staff/sjt/JFP/available.html

Regards

Simon T.___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Pugs with GHC 6.12

2010-06-01 Thread Simon Thompson

Has anyone successfully compiled Pugs with GHC 6.12? The Pugs page suggests 
that it compiles, but it falls to link (and therefore build) when I try it.

Thanks!

Simon T.___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] ANNOUNCE: dbus-core 0.6 and dbus-client 0.2

2009-12-08 Thread Will Thompson
Hi John,

Very nice work! As it happens, Dafydd Harries and I wrote another native
implementation of the D-Bus protocol, but yours is much more complete,
and the documentation/commentary is ace. A refreshing change from the
daily pain of libdbus and dbus-glib... :-)

I'm looking at modifying Bustle (which draws sequence diagrams of D-Bus
traffic; http://www.willthompson.co.uk/bustle/) to log raw D-Bus
messages to a pcap file, rather than the current custom text format that
includes just the information from the message the UI needs alongside a
timestamp. Then the UI would read the pcap file, and feed the data
through a D-Bus parser before processing it further. Now that there's a
decent D-Bus implementation available, it seems like a good time to have
a crack at this.

However, I can't find a way to feed a bytestring to dbus-core and get
back a ReceivedMessage. Is this deliberately not exposed? While it's
obviously not useful in general, it would be very useful for Bustle.
(The alternative is to construct a fake connection to myself and feed
messages down it, I guess.)

Also, the Haskell bit of Bustle is licensed under the LGPL (v2.1 or
later), but dbus-{core,client} are under the GPL v3. Could you be
convinced to reconsider the licensing of your packages? D-Bus is often
used to allow free and non-free applications to play nicely together,
letting free software be used in situations where it would otherwise be
passed over; while I for one don't plan to write any non-free D-Bus
applications in Haskell any time soon, it'd be nice not to write Haskell
off for such applications.

-- 
Will
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] ANN: attempt-0.0.0

2009-10-26 Thread Darrin Thompson
On Sun, Oct 25, 2009 at 4:51 PM, Michael Snoyman mich...@snoyman.com wrote:
 Comments are most welcome. I would like this to be a suitable replacement
 for the ubiquitous Maybe, (Either String) and ad-hoc Result data types so
 often used to report a failure. I'd be very happy to improve the package for
 the general community.


I haven't actually tried writing code with this, just read the api
docs. The api makes a lot of sense to me.

I'm a Python/Ruby guy. I see Haskell as short like Python, almost fast
like C. Your attempt monad thing _makes_ _sense_ to me.

One little nit I guess. Python had string as exception for awhile,
now they discourage that. There seems to be a historical pattern where
the right way to throw exceptions changes from throwing strings to
throwing real exception objects. Would it be possible to skip the
string one here? Are extensible exceptions too cumbersome for some
cases?

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: Time for a new logo?

2008-12-17 Thread Darrin Thompson
On Tue, Dec 16, 2008 at 9:47 PM, Jeff Wheeler j...@nokrev.com wrote:
 [1]: http://media.nokrev.com/junk/haskell-logos/logo1.png
 [2]: http://media.nokrev.com/junk/haskell-logos/logo2.png



Oops, I meant to post on list.

If you play with the angles and vary the stroke thicknesses you'll
probably get a friendlier look, vs. the military/airline look these
have now. The first '' doesn't have to be the same thickness as the
lambda.

Just another $0.02 us. Thanks for running with it. Those look like I imagined.

What I like about the design is anybody can draw it in 5 strokes and
it's unmistakably what it is. Sharpie, pencil, even spray paint all
work. You could make your own hat or t-shirt and wear it to an
important event, or a wedding. You could tag a rival cube farm wall to
declare some kind of office war.

X monad could have a variant of this logo too. X= (That's how I
originally thought of it, just was too lazy to post it anywhere. Sorry
about that.)

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Time for a new logo?

2008-12-16 Thread Darrin Thompson
My $0.02 us:

Apologies for ascii art, and hopefully gmail doesn't munge this:


\\  \\
 \\  \\  \|
  \\  \\   ---
   \\  \\
   //  / \
  //  /   \  \|
 //  /   /\\   ---
//  /   /  \\
 

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] ANN: bustle-0.1, a D-Bus activity charting tool

2008-11-14 Thread Will Thompson
Hi,

For the (probably small) set of people who are interested both in D-Bus
and in Haskell, I'm pleased to announce the first release of Bustle, a
tool to show diagrams of D-Bus traffic for profiling purposes. It
consists of a small C executable to log traffic, and a Gtk+ application
which draws diagrams using Cairo.

There's no single web page for it yet.
http://resiak.livejournal.com/59590.html has slightly more information
and context, the release is at
http://people.collabora.co.uk/~wjt/bustle/releases/bustle-0.1.tar.gz and
the source at git://git.collabora.co.uk/git/user/wjt/bustle.git .
Unfortunately, it's not on Hackage, as I haven't written the necessary
glue to get Cabal to compile the C executable, but I hope to have time
to work on getting Cabal to invoke make appropriately for the next release.

Thanks,

-- 
Will




signature.asc
Description: OpenPGP digital signature
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] The Gtk Clutter API

2008-11-13 Thread Darrin Thompson
http://www.clutter-project.org/

What is the degree-of-difficulty for creating Haskell bindings for Clutter?

Is it simple to extend gtk2hs to cover it? Or has it been done and I just
don't see it?

Thanks.

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: Hmm, what license to use?

2008-10-02 Thread Darrin Thompson
On Wed, Oct 1, 2008 at 4:00 PM, Don Stewart [EMAIL PROTECTED] wrote:

 And keep dividing our compiler teams' efforts, while
 single-implementation languages conquer :)


Seems like Haskell has a pretty clear story about which is the right
implementation for general purpose use. I don't see a Scheme problem here.

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] New Category Theory Intros

2008-08-29 Thread Darrin Thompson
These category theory intros were new to me. Thought others here might care.

http://golem.ph.utexas.edu/category/2008/08/new_structures_for_physics_i.html

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: [Haskell] Another First course in Haskell

2008-08-27 Thread Darrin Thompson
On Sat, Aug 23, 2008 at 8:41 AM, Johannes Waldmann 
[EMAIL PROTECTED] wrote:

 (*) that's the main problem I see with Hutton's book
 http://www.cs.nott.ac.uk/~gmh/book.htmlhttp://www.cs.nott.ac.uk/%7Egmh/book.html:
 it has Declaring types and classes as chapter 10 (of 13 total).
 I think that's way off - and it leaves readers (students)
 with the impression that declarative programming
 basically deals with (functions on) lists.
 This may have been true in the 70s/80s (LISP, Prolog),
 but it certainly shouldn't be true today.

 Recall the proverb Get your data structures correct first,
 and the rest of the program will write itself.
 (David Jones, cited in John Bentley: More Programming Pearls)
 I think this is independent of language and paradigm.


If functions on lists isn't the thing, what is the thing? Data structures
isn't a very satisfactory answer for a n00b like me, because it doesn't
capture Haskell's distinctive. I've had this same sense, but in a vague
newbie way.

This also seems to reflect a growing dissatisfaction with the prelude. Back
in the day lazy lists were the thing and the Prelude seems to largely
reflect that. Now it's something else I can't possibly articulate. But I can
definitely see it trying to replace a significant amount of prelude
functionality. Witness that nobody loves strings anymore because ByteStrings
are cooler. The stream/fusion lists are way cooler than the stock lists.
etc.

Or I have no idea what I'm talking about.

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] BLAS Solve Example

2008-07-23 Thread Darrin Thompson
On Wed, Jul 23, 2008 at 2:12 AM, Alberto Ruiz [EMAIL PROTECTED] wrote:
 $ ghci solve.hs
 *Main sol
 3 | [-5.511e-2,0.3,0.2776]


I was hoping for rational solutions. If I were a true jedi master I'd
write my own solver, which might be the right thing to do. All I know
so far is gauss' method. Probably I'd learn something implementing the
back substitution. hmm

Thanks.

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] ANN: Hayoo! beta 0.2

2008-07-23 Thread Darrin Thompson
On Wed, Jul 23, 2008 at 5:04 AM, Timo B. Hübel [EMAIL PROTECTED] wrote:
 Unfortunately we had to drop the direct links to the source code, as the
 documentation on Hackage is currently generated without source code. But as
 soon as this changes, we will include these links again.


Someone is working on hscolors for hackage? (Oh how hard that would rock.)

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] BLAS Solve Example

2008-07-22 Thread Darrin Thompson
I'm stuck on something that I thought would be easy.

I have a matrix and a vector.

 module Main where
 import Data.Vector.Dense
 import Data.Matrix.Dense
 import BLAS.Matrix.Solve

 m = listMatrix (2, 3) ([1, 2, 3, 4, 5, 6]::[Double])
 v = listVector 2 ([1, 2]::[Double])

 main = do ???

Can I use one of the haskell libraries to solve that system? My goal
is to automate some tedium on small exercises from the Linear Algebra
text by Jim Heffron.

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Haskell Related Reading

2008-06-28 Thread Darrin Thompson
I have a trip coming up and might have some reading time. I was hoping to
get through some of the classics, bananas and lenses, the essence, etc.

So I have a few questions:

Bananas and lenses et. al. uses some notation that I don't understand right
out of the gate. Is there a good primer on whatever that brand of double
bars and arrows means?

The essense of functional programming looks good, I could understand it when
I skimmed it but can I print it out on US letter? The PDF at citeseer was
aligned badly. (Essece seemed like a fabulous intro or chapter 2 on getting
used to monads. Better than most stuff on the web. Funny that...)

I'm also interested in FRP as it might relate to web programming. Anyone
have a recommendation?

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Literal programming in Haskell with rst-literals

2008-06-23 Thread Darrin Thompson
2008/6/23 Abhay Parvate [EMAIL PROTECTED]:
 Hello,

 You might already know this, but in case you don't: there is another
 literate style:


I had trouble finding the docs on this, as I expected them to be in
the ghc user guide. For the record, the relevant docs are in the h98
report:

http://www.haskell.org/onlinereport/literate.html

And the wiki:

http://www.haskell.org/haskellwiki/Literate_programming

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Announce: Fortress talk in New York City

2008-06-13 Thread Darrin Thompson
2008/6/13 Jeff Polakow [EMAIL PROTECTED]:
 There will be a talk on Fortress ( a new OO/Functional language from Sun) on
 Wednesday June 25 at 6:30pm in Manhattan.


Sounds interesting. Any plans to post video?

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] cabal-install failure

2008-06-13 Thread Darrin Thompson
Cabal-install is looking good. It now, for the record, has only two
deps outside of Cabal-1.4.

I installed cabal-install-0.5 on ubuntu with the haskell.org linux
binary for ghc 6.8.2.

I then tried cabal-install yi

Got this output:
... many successful installs ...
Registering vty-3.0.1...
Reading package info from dist/installed-pkg-config ... done.
Saving old package config file... done.
Writing new package config file... done.
Downloading yi-0.3...
[1 of 1] Compiling Main ( Setup.hs, dist/setup/Main.o )

Setup.hs:9:0:
Warning: Deprecated use of `showPackageId'
 (imported from Distribution.Simple, but defined in
Distribution.Package):
 use the Text class instead
Linking dist/setup/setup ...
Warning: defaultUserHooks in Setup script is deprecated.
Configuring yi-0.3...
Warning: Instead of 'ghc-options: -DDYNAMIC -DFRONTEND_VTY' use 'cpp-options:
-DDYNAMIC -DFRONTEND_VTY'
setup: alex version =2.0.1  3 is required but it could not be found.
cabal: Error: some packages failed to install:
yi-0.3 failed during the configure step. The exception was:
exit: ExitFailure 1

Is this a cabal problem of package problem? I would have expected it
to fail immediately instead of discover this problem so far into
process.

Thanks.

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: cabal and platform-independent haskell installation management (again) (Re: Re: Ubuntu and ghc)

2008-06-05 Thread Darrin Thompson
On Wed, Jun 4, 2008 at 7:48 PM, Duncan Coutts
[EMAIL PROTECTED] wrote:

 On Wed, 2008-06-04 at 17:22 +0200, Achim Schneider wrote:

 The question, IMHO, seems to be

 How would a package manager for a posix-compilant kinetic look like?

 http://nixos.org/index.html


How well does that coexist with other OS's? Could I have it manage
only specific applications in it's store and trust the OS for the
rest?

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: cabal and platform-independent haskell installation management (again) (Re: [Haskell-cafe] Re: Ubuntu and ghc)

2008-06-04 Thread Darrin Thompson
On Wed, Jun 4, 2008 at 10:14 AM, Claus Reinke [EMAIL PROTECTED] wrote:
 - it isn't sufficient to worry about installation management,
   one has to worry about integration, lifetime and uninstall
   management as well. in short, maintain the dependency
   graphs over any of install/upgrade/uninstall.


It's sufficient to worry about the problem at hand. Everything you've
mentioned can be done incrementally once the depsolver is happy.

After that it's quite likely that the set of people who care about
lifetimes and integration stuff will intersect with the people who
want to work on said stuff.

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] [ANNOUNCE] git-darcs-import 0.1

2008-06-03 Thread Darrin Thompson
On Sun, Jun 1, 2008 at 2:44 PM, Bertram Felgenhauer
[EMAIL PROTECTED] wrote:
 Hi,

 I'm pleased to announce yet another tool for importing darcs repositories
 to git. Unlike darcs2git [1] and darcs-to-git [2], it's written in
 Haskell, on top of the darcs2 source code. The result is a much faster
 program - it can convert the complete ghc 6.9 branch (without libraries)
 in less than 15 minutes on my slightly dated machine (Athlon XP 2500+),
 which is quite fast [3]. Incremental updates work, too.


What's the appeal of this? I personally love git, but I thought all
the cool kids at this school used darcs and that was that.

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Rewrite class with fundeps in pure h98?

2008-06-03 Thread Darrin Thompson
I thought that I should be able to write something like the toHtml
function below with pure H98, but when I went to write it I ended up
needing fundeps. Is there a way to express this without using any
extensions?

The idea was to take a remotely Dom-like tree and flatten it into a
string, but not require any particular string type. Mostly I'm ripping
off HStringTemplate for the fun of it.

{-# OPTIONS -fglasgow-exts #-}
module Control.WebWidget where

import Data.Monoid
import Data.String

data (IsString s, Monoid s) = Dom s =
Element s [Attr s] [Dom s] |
Text s

data (IsString s, Monoid s) = Attr s = Attr s s

class (Monoid s, IsString s) = HTML d s | d - s where
toHtml :: d - s

instance (Monoid s, IsString s) = HTML (Dom s) s where
toHtml (Element name attrs children) =
mconcat [
fromString ,
name,
mconcat $ map toHtml attrs,
fromString ,
mconcat $ map toHtml children,
fromString /,
name,
fromString  ]
toHtml (Text s) = s

instance (Monoid s, IsString s) = HTML (Attr s) s where
toHtml (Attr key value) =
mconcat [
fromString  ',
key,
fromString '=',
value,
fromString '  ]


--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Damnit, we need a CPAN.

2008-05-29 Thread Darrin Thompson
On Thu, May 29, 2008 at 11:47 AM, Neil Mitchell [EMAIL PROTECTED] wrote:
, a cabal-inst that can install from darcs (or at least from
 a local directory)

 Yes, that would be lovely!


While we're on the subject, why does searchpath get as little
attention as it does? It seems to work reasonably well for HAppS.

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Damnit, we need a CPAN.

2008-05-29 Thread Darrin Thompson
On Thu, May 29, 2008 at 4:31 PM, Thomas Hartman [EMAIL PROTECTED] wrote:
 I've been playing a lot with searchpath lately, for doing happs
 quickstart installation as described on happs.org.

 Searchpath works great when it works, which usually means -- when the
 module map file is up to date and pointing everywhere to the right
 place.

 When the module map file is out of date though, the error messages for
 missing dependencies that you would get from searchpath are not as
 good as the error messages you'd get from a cabal configure.


Makes me wonder if searchpath and a good module map file wouldn't be a
good way to bootstrap cabal-install.

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] So how do people pronounce 'cabal' around here?

2008-05-28 Thread Darrin Thompson
2008/5/28 Clifford Beshers [EMAIL PROTECTED]:
 But if you say it that way, you get kicked out of the cabal.


I thought the first rule was There is no cabal. Oh wait, that's
Debian. Oh wait... aa!

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: Re: [Haskell-cafe] Aren't type system extensions fun? [Further analysis]

2008-05-27 Thread Darrin Thompson
On Tue, May 27, 2008 at 3:40 PM, Kim-Ee Yeoh [EMAIL PROTECTED] wrote:
 Let's fill in the type variable: (x - x) - (Char, Bool) ==
 forall x. (x - x) - (Char, Bool) == x_t - (x - x) - (Char, Bool),
 where x_t is the hidden type-variable, not unlike the reader monad.

 As you've pointed out, callER chooses x_t, say Int when
 passing in (+1) :: Int - Int, which obviously would break
  \f - (f 'J', f True).

 What we want is the callEE to choose x_t since callEE needs to
 instantiate x_t to Char and Bool. What we want is
  (x_t - x - x) - (Char, Bool).
 But that's just
  (forall x. x - x) - (Char, Bool).


Nice. That's the first time any of this really made sense to me. Is it
possible to construct valid argument for that function?

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] GHC predictability

2008-05-13 Thread Darrin Thompson
On Tue, May 13, 2008 at 2:20 AM, Don Stewart [EMAIL PROTECTED] wrote:
  Note the use of strict pairs. Key to ensuring  the accumulators end up in
  registers.The performance difference here is due to fold (and all left
  folds) not fusing in normal build/foldr fusion.

  The vector version runs about the same speed as unoptimsed C.


These tricks going into Real World Haskell? When you say someone
needs to get familiar with the STG paper it scares me (a beginner)
off a little, an I've been making an effort to approach the papers. I
could barely understand the Fusion one and getting familiar with
compiler internals sounds like something I'd not be ready for.
Probably if I really looked at ghc-core I'd be pleasantly surprised
but I'm totally biased against even looking. Gcc is hard to read, thus
ghc is also. So while you are right about all this when you say it, I
think your goal is to persuade. RWH has some of the best practical
prose I've read yet. Well done there. Hopefully chapter 26 will be
crammed full of this stuff?

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] I am new to haskell

2008-05-08 Thread Darrin Thompson
On Thu, May 8, 2008 at 2:59 AM, Benjamin L. Russell
[EMAIL PROTECTED] wrote:
  * Kees Doets and Jan van Eijck: The Haskell Road to Logic, Maths and 
 Programming,

As someone approaching haskell with very rusty math skills, this book
has been invaluable. My haskell skills are (mostly) beyond what the
text is covering, but I'm dutifully working through the math problems
as doing it (partway through chapter 4 now, yay!) has sharpened my
thinking already. The end result is that I can already sort of read
some of the Haskell research papers like the Fusion one.

Also, Jan van Eijck is pretty responsive and untangled my mind from
time to time.

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: Interesting critique of OCaml

2008-05-08 Thread Darrin Thompson
2008/5/8 Donnie Jones [EMAIL PROTECTED]:
 I would be interested to see an article on Haskell in the same light as this
 Ocaml article, aka a constructive criticism of Haskell.


http://www.drmaciver.com/2008/02/tell-us-why-your-language-sucks/

--
Darrin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: HFuse: ls fails in HelloFS

2008-03-16 Thread Will Thompson
I just merged my work with Taru Karttunen's; you probably want to

  % darcs get http://code.haskell.org/hfuse/

The API is a tad different to the one in my old repository; I had some
kind of pointless MVar state threading in my branch which I wrote on a
whim but which isn't particularly useful, so I left it out.

Taru has ByteString-ized reading from files, which is a win.

Currently the module's name is HFuse.  Presumably it really belongs
under System somewhere; System.Posix.Fuse maybe?  What do folks think?
Are there any guidelines for picking a namespace?

-- 
Will



signature.asc
Description: OpenPGP digital signature
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] HFuse: ls fails in HelloFS

2008-03-15 Thread Will Thompson
On 15/03/08 03:10, Austin Seipp wrote:
 I've tested it on 6.8 and it works fine (Will has 6.6 I believe,) and
 the HelloFS example should work, but it is still under development
 (notably I believe him mentioning that the BindFS example 
 has a deadlock issue at the moment.) Testing out that version might
 yield better results.

(I recently fixed a couple of deadlocks, but not in that branch yet.)

 I would recommend contacting him on the matter, since he seems to be
 the only person in this project currently. Sorry I couldn't have been
 more help.

Taru Karttunen has been doing some work on it recently, too.  I'm hoping
to merge my work with his at darcs.haskell.org/hfuse in the next few days.

-- 
Will



signature.asc
Description: OpenPGP digital signature
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: New slogan for haskell.org

2007-10-06 Thread Will Thompson
On Sat, Oct 06, 2007 at 01:26:18PM -0500, Alex Tarkovsky wrote:
 ...and the silliness continues:

In which case:

http://pics.livejournal.com/resiak/pic/00019kx6/

Will


signature.asc
Description: Digital signature
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: Representing cyclic data structures efficiently in Haskell

2003-07-07 Thread Sarah Thompson

From reading your message, it seems you want a graph library of sorts.

The important bit is 'of sorts', unfortunately! Most graph libraries 
I've seen to date (although I must admit that they have been written in 
C and C++, including one I perpetrated personally) don't really work 
that well for circuits because, for anything other than trivially simple 
components, the connections between nodes need to be labelled.

A component representing something simple like (say) an 'and' gate would 
be easy enough to represent as a node of an ordinary directed graph. In 
such a case, an incoming arrow would always be an input of the gate, and 
an outgoing arrow would always be the output. I need to be able to 
represent more complex components, up to and including the complexity of 
things like CPUs, where you might have lots and lots of inputs and 
outputs with substantially different meanings. In the case of a CPU, it 
would never be acceptable to (for example) swap a chip select output for 
an address or data line.

This makes me think that an off-the-shelf graph library won't quite be 
what I'm after, so I will almost certainly need to write the code. What 
I'm more interested in at the moment is a view on the best kinds of 
approach that might be appropriate.

I'd considered something like embedding the type in the IO monad, with 
links between components implemented as IORefs, but I'd really prefer 
something cleaner (pure functional). If the code ends up horribly 
complicated in order to get decent performance, I might as well fold and 
use C++ instead.

I'm currently wondering about going for an adjacency list approach (as 
used by most graph libraries), with the tuples in the adjacency list 
extended to include input/output labels, resulting in a 4-ary tuple 
rather than the usual 2-ary. But, I don't want to be stuck with 
representing this as a list -- I really need log N lookups or 
performance will stink horribly as circuits get big. Maybe a pair of 
finite maps, allowing the edges to be traversed in either direction?


If FGL seems like overkill to you, I have my own little mini graph
library which basically looks like:
 - An ADT, Node:  newtype Node = Node Int deriving ...
 - The 'Graph n e' data structure, containing:
 - a FiniteMap from n - Node
 - an (growable?) array of type IOArray (Node,Node) e
the array represents the edges in the top half (i do some index fiddling
to get this efficient) and the finitemap represents the node labellings.
It's a pretty stupid interface and works a lot better when the graphs
are fixed size (that way you don't need to grow the array).  But it
works.
 

The finite map from n to Node seems like a good idea. Does representing the adjacency list as a flat array cause any problems?

Sarah

--
--
   / __+ / Sarah Thompson   /
  / (_  _  _ _ |_   /* /
 /  __)(_|| (_|| ) / [EMAIL PROTECTED]  * /
/ +   / http://findatlantis.com/ /
--


--
 --
/ __+ / Sarah Thompson   /
   / (_  _  _ _ |_   /* /
  /  __)(_|| (_|| ) / [EMAIL PROTECTED]  * /
 / +   / http://findatlantis.com/ /
--
___
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: Naive question on lists of duplicates

2003-06-06 Thread Sarah Thompson

I'm pretty confident that this will be more efficient than my colleague's SAS code, as he was comparing each record to every other record (giving n (n-1) comparisons).  It seems like this, in the worst case where everything is on promotion at distinct times, will compare the first record to (n-1) records, the second to (n-2) records, etc., giving n (n-1)/2 comparisons.  Thus, while this is worst-case O(n^2), it seems like it should have at most half as much work to do as the earlier approach in SAS.  On the other hand, in the best case, when everything is on promotion at the same time, there should be something like n-1 comparisons made and then that should be it.  So it seems like, depending on how frequently promotions co-occur for this retailer, the above should be somewhere between O(n) and O(n^2) time complexity.  Since these people are always having some sale or other, I suspect this won't be much worse than O(n log n).

Is there anything that is an obvious improvement in efficiency -- some clever tricks with the fold functions, some way of loading the data into some sort of convenient structure first, etc -- that I could easily implement?
 

Firstly I'm assuming that you are working with a granularity of days, and that each promotion will always have a relatively small maximum number of days. If so, how about something like the following:

1: Filter the existing data structure, resulting in a lazy list of tuples (a, b) where a is a day number and b is an identifier for the promotion. Where a promotion spans n days, the list will contain n entries, one for each day of the promotion. Complexity is O(M x N), where M is the (small) maximum number of days. If this is fixed *and* small, we can discard this any regard the complexity as just O(N).

2: Sort the list with a as the primary key and b as the secondary key. Complexity should be near enough O(N log N)

3: Traverse the results of the sort, outputting a lazy list of lists such that the elements of each sub-list are references to the promotions that overlap for one specific day number. Where no overlap is detected for one specific day, that day can simply be ignored. Complexity should be linear.

4: Sort this list, and discard duplicates. Complexity should be O(N log N) for the sort and O(N) for the 'uniq'.

5: You are now left with a list which describes all overlapping promotions.

Total complexity should effectively be O(N + N log N + N + N log N + N) which of course just collapses to O(N log N).

--
 --
/ __+ / Sarah Thompson   /
   / (_  _  _ _ |_   /* /
  /  __)(_|| (_|| ) / [EMAIL PROTECTED]  * /
 / +   / http://findatlantis.com/ /
--
___
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: GHC and C++ (was RE: Creating COM objects and passing out pointers to them via a COM interface)

2003-02-04 Thread Sarah Thompson
I'm replying to two threads at the same time and cross posting my reply,
because they are very relevant to each other. I'm sorry if anyone here ends
up seeing this more than once as a consequence.

[s]

--
 Sarah

 Did you get this problem sorted out?

Not directly. I ended up building an 'outer' COM component in C++ that
mapped an MSXML-like interface onto a simpler, internal COM component that
wraps up the Haskell code. This approach seems to work well - I might have
been able to build the necessary wrapper directly in Haskell using HDirect,
but I was becoming aware that I was probably starting to take up an
unreasonable amount of Sigbjorn's time with increasingly detailed questions
and I didn't have time to figure out the necessary intricacies from scratch.

HDirect seems very good, but I don't think it's currently in quite as stable
a state as the main GHC release. The problems I had in building a version
that works with the current GHC are an example of this. I'm not
complaining - it worked well in the end, but I do think it might be a 'good
thing' to consider rolling HDirect into the main GHC release at some point.

The other thing that bit me was exception handling, or rather the default
behaviour when an uncaught exception 'falls out' and reaches the top level
of the runtime system. Currently, the functionality appears to be to abort
the current process. Whilst this is probably desirable for a typical
application executable (be that console or GUI based), it is a problem if it
happens inside a COM component. My thinking is quite straightforward on
this. Preferred behaviour should really be for a call to a COM component to
fail returning an error code, rather than abort the calling process.
'Server-style' applications are usually expected to keep running when minor
faults occur, rather than terminate. HDirect/GHC's current behaviour makes
this difficult to achieve - I managed to successfully catch exceptions, but
the price was needing to use some code based on DeepSeq to force deep strict
evaluation for all state updates. This (seemingly) was the only way I could
stop exceptions from happening in the context of the automatically generated
COM wrapper - passing it a fully evaluated data structure was apparently the
only solution available. However, this does break the advantages of laziness
as applied to the current state of the object - it would be pretty neat, for
example, to be able to define a view of a database as the result of an
expression involving relational algebra combinators, with the query
evaluated one record at a time as the data is pulled back by the client
application. The need for DeepSeq forces strict evaluation, so this benefit
is lost. This is actually more of an issue than it might immediately seem -
many queries don't actually need to retrieve all of a record set before
useful things can be done. A particular example is updating a GUI, where a
list box reflects the results of a query. Lazy evaluation will allow the
screen to start updating more or less immediately even on a query that
returns thousands of records - strict evaluation might incur a delay of a
few seconds (for a very complex query or a large database) before updates
can start happening.

In an ideal world, what I'd dearly love to see would be an HDirect option
that allows a choice between existing functionality and having calls return
a failure code, or better still allowing a user-supplied handler function to
determine the correct course of action.

So, to sum up my wish list:

1. A facility to replace the default uncaught exception behaviour for COM
objects and similar shared library code

2. HDirect rolled into the main GHC tree

3. A facility within HDirect to create COM objects based on existing
(Haskell) data structures, returning an interface pointer as a return
parameter on a call to an existing COM object. (This was the question Simon
asked if I'd had an answer to - I've attached a copy below for reference).

Sarah

PS: I've not yet looked closely at the .NET integration in GHC yet, but I
can imagine myself having a very similar wish list in that case too.


Hi again,

A slightly harder problem this time. I want to implement something that
looks something like the Microsoft XML parser. This is a very COM heavy
contraption that provides an interface that looks to client applications
like a tree of COM objects that reflects the internal structure of an XML
document.

The idea is, you start with the document object, make a method call
requesting the root node, and have a COM object that wraps that node
returned to you. You can then request the children of that node, and their
children and siblings, all which involves being passed back interface
pointers to COM objects. Effectively, there is one COM object per syntactic
item in the XML document.

I already have my document object working nicely. This is where the actual
database resides. I want to be able to spawn views of this database as COM

RE: Exception handling in GHC

2003-01-24 Thread Sarah Thompson
I've noticed some interesting behaviour:

Prelude Control.Exception try (return (error e))
Prelude Control.Exception it
Right *** Exception: e

It would appear that when the result of this function is evaluated, the
exception fires during evaluation, after the try is out of scope. I suppose
it makes some kind of twisted sense due to lazy evaluation going on, but it
is certainly a gotcha.

I did notice this:

Prelude Control.Exception try (return $! (error e))
Prelude Control.Exception it
Left e

Seemingly, forcing strict evaluation on the argument of return fixes the
problem by making sure that any exception that *can* happen, *does* happen.

However, this code from my COM wrapper:

--[id(3)] HRESULT XmlQuery([in,string] BSTR query, [out,retval]BSTR* xml);
xmlQuery :: String - State - IO String
xmlQuery qry (State st) = do
db - readIORef st
Control.Exception.catch (return $! (XMLDatabase.xmlQuery qry db))
(\ _ - return error description=\Parse
error\/)

doesn't work. If XMLDatabase.xmlQuery throws an exception, the COM wrapper
still terminates the host application (Yes, Sigbjorn - I did apply your
patch to HDirect, but it seemed to make no difference).

I'm still a bit stuck here!

Sarah

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



RE: Exception handling in GHC

2003-01-24 Thread Sarah Thompson
 Your COM wrapper code probably behaves differently because the error is
 not evoked at the very top level.  Note that `seq` (and hence ($!)) only
 force evaluation to weak head normal form, which essentially means only
 enough to determine the top-level constructor.  You may need to evaluate
 more deeply.  Check out `DeepSeq`
 (http://haskell.org/pipermail/haskell/2001-August/001586.html) and/or
 strategies
 (http://www.mail-archive.com/haskell@haskell.org/msg09543/Strategi
es.lhs).

DeepSeq fixed it in one go. Brilliant! Many thanks for the help. My COM
object now appears to be unreasonably solid regardless of what I throw at
it. :)

Sarah

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



Creating COM objects and passing out pointers to them via a COM interface

2003-01-24 Thread Sarah Thompson
Hi again,

A slightly harder problem this time. I want to implement something that
looks something like the Microsoft XML parser. This is a very COM heavy
contraption that provides an interface that looks to client applications
like a tree of COM objects that reflects the internal structure of an XML
document.

The idea is, you start with the document object, make a method call
requesting the root node, and have a COM object that wraps that node
returned to you. You can then request the children of that node, and their
children and siblings, all which involves being passed back interface
pointers to COM objects. Effectively, there is one COM object per syntactic
item in the XML document.

I already have my document object working nicely. This is where the actual
database resides. I want to be able to spawn views of this database as COM
objects. When I've done this in the past (using ATL mostly, egh), I've
used an IDL definition something like

   HRESULT CreateView([in,string] BSTR query, [out,retval] IDbView **);

What's the correct way to implement the necessary Haskell code to create the
coclass and return a pointer to it? I fiddled around for ages, but either
couldn't get GHC to like the types I was using, or when I finally got it to
compile, I found that my test harness was being passed an invalid COM
object. This should be simple stuff, so I'm sure someone will have done it!

Secondly, it is a nasty, though fairly common trick, if you know your
objects are going to be created in the same process space, to allow them
some 'behind the scenes' communication. In my case, I'd like to avoid
needing to serialise and deserialse the data in a view during creation of
these child objects (of which there may be a great many, and which may be
created on the fy rather often). Ideally, I'd like to be able to do
something like:

newView :: String - State - IO State
newView db (State st) = do
db - readIORef st
r - newIORef db
-- Insert some kind of COM magic here
return (State r)

so the database content gets copied within the Haskell environment (lazily,
I'd hope), without needing to be serialised and deserialised. Is this
feasible? One (messy) approach might be to create a bunch of extra
interfaces on the main database object, then create 'thin wrapper' child
objects that simply make calls back into the parent object. I'm not so keen
on that for various reasons, however.

Sarah

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



RE: Stupid questions...

2003-01-23 Thread Sarah Thompson
 I need to convert Ints to Strings and vice-versa. What's the best 
 way to do
 this? I've not found library functions for this.

Read and Show. Hmm... should have tried that before posting. :)

My second question about integer division still stands, however.

Thanks,
Sarah
___
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe