RE: [Haskell-cafe] Re: list choices

2009-01-26 Thread Sittampalam, Ganesh
Malcolm Wallace wrote:
 
 As for Reply-to: munging - I agree that _changing_ an existing header
 would be bad, but would be very happy if mailing lists were to
 _introduce_ one on messages where none already existed.  

That would IMO be the worst of both worlds, as people might use
Reply-To for reasons entirely unconnected with the mailing list.
So you'd end up with a confusing situation where the default target
of replies varied depending on some completely irrelevant factor.

Ganesh

==
Please access the attached hyperlink for an important electronic communications 
disclaimer: 

http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html
==

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


Re: [Haskell-cafe] Re: Laws and partial values

2009-01-26 Thread Thomas Davie


On 25 Jan 2009, at 23:36, Daniel Fischer wrote:


Why is this obvious - I would argue that it's obvious that bottom
*is* () - the data type definition says there's only one value in the
type.  Any value that I haven't defined yet must be in the set, and
it's a single element set, so it *must* be ().


It's obvious because () is a defined value, while bottom is not - per
definitionem.
The matter is that besides the elements declared in the datatype  
definition,

every Haskell type also contains bottom.
-

I thought that under discussion were the actual Haskell semantics -  
I'm not so

sure about that anymore. If Thomas Davie (Bob) was here discussing an
alternative theory in which () is unlifted, the sorry, I completely
misunderstood.

My argument is that in Haskell as it is, as far as I know, _|_  
*is* defined
to denote a nonterminating computation, while on the other hand ()  
is an
expression in normal form, hence denotes a terminating computation,  
therefore

it is obvious that the two are not the same, as stated by Jake.
Of course I may be wrong in my premise, then, if one really cared  
about

obviousness, one would have to put forward a different argument.


If you go look through the message history some more, you'll see a  
couple of emails which convinced me that that indeed was the semantics  
in haskell, and a follow up saying okay, lets discuss a hypothetical  
now, because this looks fun and interesting.


Bob

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


Re: [Haskell-cafe] Re: Laws and partial values

2009-01-26 Thread Daniel Fischer
Am Montag, 26. Januar 2009 10:28 schrieb Thomas Davie:
 If you go look through the message history some more, you'll see a
 couple of emails which convinced me that that indeed was the semantics
 in haskell, and a follow up saying okay, lets discuss a hypothetical
 now, because this looks fun and interesting.

 Bob

I missed that part. Sorry for the noise.

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


Re: [Haskell-cafe] ANN: filestore 0.1

2009-01-26 Thread Thomas Davie


On 26 Jan 2009, at 06:17, carmen wrote:


back to the original topic of the thread..

cool project,

id be interested ina pure-FS backend as well,


Indeed, very cool!

Can I make another feature request – generalize how diffs are created,  
so that I could in theory parse the file contents, and then diff the  
CSTs rather than diffing text.


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


Re: [Haskell-cafe] Re: list choices

2009-01-26 Thread Ketil Malde
Malcolm Wallace malcolm.wall...@cs.york.ac.uk writes:

 The duplicate messages will have the same Message-ID...

 if they post a message they *want* the reply to go to their main
 inbox as well as the mailing list folder.

 Maybe I am just stupid, or maybe my email client is inadequate, 

If your email doesn't have the option to hide or sort out duplicate
messages, another option might be to use procmail - googling for
procmail filter duplicates might give you some recipes.

 As for Reply-to: munging - I agree that _changing_ an existing header
 would be bad, but would be very happy if mailing lists were to
 _introduce_ one on messages where none already existed.

I've been following many lists who choose to add a Reply-To header,
and they invariably get cluttered by mail intended to be private
accidentally being posted to the list.  Usually it isn't too
embarassing, but sometimes it is.  I'd err on the side of caution.

Of course, the right solution would be for Mailman (or other list
processing software) to let subscribers choose individually how to set
headers in the email they receive.

-k (carefully deleting the @cs.york address from the To field)
-- 
If I haven't seen further, it is by standing in the footprints of giants
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] ANN: filestore 0.1

2009-01-26 Thread Duncan Coutts
On Mon, 2009-01-26 at 01:14 +0300, Miguel Mitrofanov wrote:
 Maybe, we should have another command in cabal-install, something like  
 cabal announce, that would post an announcement to  
 hask...@haskell.org?

There is an RSS feed of hackage uploads of course. We could work on
making that more informative.

Duncan

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


Re: [Haskell-cafe] Haskell Web Framework

2009-01-26 Thread Marc Weber
Hi Michael Snoyman, Donnie Jone,

I don't think cross posting to web-devel and haskel-cafe is a good idea.
Maybe do that but then advice people to either reply to cafe or to
web-devel. So I suggest that we continue this discussion on web-devel.

First of all there have been some attempts already to provide web
frameworks for haskell.

If you don't konw WASH yet please do have a look at the examples.
I find the idea behind WASH pretty neat.
It does also solve parts of the strict XHTML problem. you can only add
valid tags and attributes. However it doesn't pay attention to order.
(I don't think it was possible that time WASH was written).

I've tried to make it better and verify that only valid XHTML is
generated.

The result is a finate state machine implented using functional
dependencies.

You can get the code from here git://mawercer.de/vxml..

However while doing so I noticed that this starts turning into a typing
hell.. Why?
There are some tags which require one or more childs (example : ul).
So to distinguish both states (empty ul, ul with at least one element
which may be closed) you need two different types. Thus you can no
longer do
  myUl = ul $ map (li . show) [1...]

My solution was to switch to a weak checking which only allows valid sub
tags but does no longer care about order etc.

So by now I'd vote for a partial validation only. a total validation
isn't worth the effort. But it would be nice to to derive that from some
specification (such as XHTML). So maybe have a look at my library and
use the weak validation mode.

About Ajax:
I've developped some Ajax applications beeing written in PHP using
MySQL..

In WASH everything is simple: You have one state (it doesn't know about
AJAX). From that state you can go on, duplicate it etc. The state is
passed to the client using an hidden input. So there is not that much
you have to care about. But you can't write that much interaction easily
either.

When starting to write a web application (say a web shop).. it would be
best if the client page keeps a state knowing about the basket and its
content as well. And if you start implenting fancy features such as drag
and drop I'm no longer sure which is the best way to handle this
client state. I even don't know wether it can be abstracted on server
side (using any language)..

I'll watch you, keep posting to this list about your progress.

Comments about the blog post 
(http://blog.snoyman.com/2009/01/25/haskell-web-framework/)

  Maybe the first step is writing down differences between existing
  haskell web frameworks. Probably the haskell wiki would be a good place
  to start.

  Another first step might be writing kind of abstraction so that an
  application can use either HAppS or apache or (fast)-CGI etc..

  Encrypted cookies :-) Nice idea..
  However this does mean a lot more traffic, doesn't it?
  It also depends on your storage enginge. If you have once keeping stuff
  in memory this won't hurt that much.
  But you're right. I'll think about that option

  About 13.:
We should be able to simply specify the algorithm necessary to
  calculate an age from a birthday, and the framework will convert this
  into both client- and server-side code

  There is already a haskell - JS converter..
  However this will cause a lot more traffic. And if you have many users
  only loading the front page ..
  How do you want to utilize the power of existing script frameworks (eg
  Mootools) ?
  Should the engine be aware about those?

  What about CSS abstraction ? I mean ie6 does read some CSS properties
  quite different..

  What about JS automatic compression (maybe even rewriting names to
  shorter ones)?

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


[Haskell-cafe] bug in System.Mem.StableName

2009-01-26 Thread Alberto G. Corona
Sometimes the StableName library gives different values for the samr
function: Sometines gives two alternate values. I checked it in ghc-6.10.1
under windows and in ghc-6.8.2 under Linux:

This is an example

Prelude
System.Mem.StableName.hashStableName.System.IO.Unsafe.unsafePerformIO $
 System.Mem.StableName.makeStableName (*)
15
Prelude
System.Mem.StableName.hashStableName.System.IO.Unsafe.unsafePerformIO $
 System.Mem.StableName.makeStableName (*)
14
Prelude
System.Mem.StableName.hashStableName.System.IO.Unsafe.unsafePerformIO $
 System.Mem.StableName.makeStableName (*)
15
Prelude
System.Mem.StableName.hashStableName.System.IO.Unsafe.unsafePerformIO $
 System.Mem.StableName.makeStableName (*)
14
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] MySQL and HDBC?

2009-01-26 Thread Yitzchak Gale
Chris Waterson wrote:
 You probably already know this, but... you can
 mix tables from different storage engines in a
 single *statement*.

Oh, no, I thought it was per database. Horrors!

 ...when a ROLLBACK has been issued
 against a non-transactional table... I could raise an
 error... perhaps this is preferable?

John Goerzen wrote:
 ...what happens in the ODBC case depends on what
 the user puts in odbc.ini... either the full-on error
 treatment, or the ignoring the problem

It does make sense for this to be configurable.

In addition, you might want even more than the current
full-on error mode:

As Chris pointed out, throwing an exception at commit
or rollback is a bit late - your data may already be
destroyed by then. There should be a safe mode that
raises an exception any time you try make a change to a
non-transactional table, even before commit or rollback.
That way, you would be able to write code like this:

Start doing A in a new transaction. If any operation tries
to make a change in a non-transactional table, roll back
A and do B instead.

Transactional safe mode could still allow reads of
non-transactional tables.

Is this possible for MySQL and/or ODBC?

 If you feel that the HDBC API needs to become more
 rich, I'm quite happy to entertain suggestions there

Well, this makes a major difference in the meaning of
a program. So it does seem that it should be possible
at least to detect what is happening, or even control it
programatically.

In the case of a connection with less than guaranteed
full support for transactions, you would want to be able
to choose between the two behaviors available in the
ODBC driver, or safe mode.

Right now, the meaning of the dbTransactionSupport flag
is ambiguous. Does True mean that full support for transactions
is guaranteed? Or only that it might be supported for some tables?
If not supported for some table, will the driver revert to
irrevocable immediate changes, or raise an exception? Will
silently ignore commit and rollback requests, or raise an
exception?

Even before the API becomes richer in this respect,
the documentation should more clearly indicate the meaning
of this flag (and drivers should then comply).

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


Re: [Haskell-cafe] MySQL and HDBC?

2009-01-26 Thread John Goerzen
Yitzchak Gale wrote:
 Right now, the meaning of the dbTransactionSupport flag
 is ambiguous. Does True mean that full support for transactions
 is guaranteed? Or only that it might be supported for some tables?
 If not supported for some table, will the driver revert to
 irrevocable immediate changes, or raise an exception? Will
 silently ignore commit and rollback requests, or raise an
 exception?

That is quite true.  I had not realized that it was possible for this to
vary within a MySQL database at the time I put that flag in.

I believe MySQL is the only database people are likely to use with HDBC
(even Sqlite has universal transaction support) that has this issue, so
I would really encourage the community of MySQL users to come up with
the API that would be most helpful in this situation, and as I said, I'm
happy to add it to HDBC.

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


Re: [Haskell-cafe] bug in System.Mem.StableName

2009-01-26 Thread Luke Palmer
2009/1/26 Alberto G. Corona agocor...@gmail.com

 Sometimes the StableName library gives different values for the samr
 function:


First, unsafePerformIO is not subject to referential transparency.  You have
to ensure it yourself.  That's why it's unsafe.

Now, did you read the StableName documentation?  From the docs:

Stable names have the following property:  if sn1 :: StableName and sn2 ::
 StableName and sn1 == sn2 then sn1 and sn2 were created by calls to
 makeStableName on the same object.  The reverse is not necessarily true: if
 two stable names are not equal, then the objects they name may still be
 equal.


So the behavior you cite is perfectly reasonable: does not break referential
transparency (unsafePerformIO is the culprit here), and is consistent with
the documentation.

Luke

Sometines gives two alternate values. I checked it in ghc-6.10.1 under
 windows and in ghc-6.8.2 under Linux:

 This is an example

 Prelude
 System.Mem.StableName.hashStableName.System.IO.Unsafe.unsafePerformIO $
  System.Mem.StableName.makeStableName (*)
 15
 Prelude
 System.Mem.StableName.hashStableName.System.IO.Unsafe.unsafePerformIO $
  System.Mem.StableName.makeStableName (*)
 14
 Prelude
 System.Mem.StableName.hashStableName.System.IO.Unsafe.unsafePerformIO $
  System.Mem.StableName.makeStableName (*)
 15
 Prelude
 System.Mem.StableName.hashStableName.System.IO.Unsafe.unsafePerformIO $
  System.Mem.StableName.makeStableName (*)
 14

 ___
 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


Re: [Haskell-cafe] ANN: filestore 0.1

2009-01-26 Thread Gwern Branwen
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA512

On Mon, Jan 26, 2009 at 12:17 AM, carmen  wrote:
 back to the original topic of the thread..

 cool project,

 id be interested ina pure-FS backend as well,

 as the overhead of a git/hg add/commit is a bit too much for eg a single 
 'field' of data

Well, for high-performance we expect people to use Data.Binary and
roll their own subset of version-controlling capabilities. If you
wouldn't use git or darcs for something to begin with, filestore isn't
going to help much.

 plus you can also verison via new URIs and/or a subtree-versioning FS like 
 BTRfs...

Going through a versioning FS sounds like a good idea, although I
wouldn't want to implement some of the more complex functions like a
history changelog. Patches are welcome.

(Versioning plain files vie new names sounds very inefficient to me,
though; I wonder if such a system would be worse than just using
darcs/git.)

- --
gwern
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)

iEYEAREKAAYFAkl9zDEACgkQvpDo5Pfl1oI98ACfdt7jic+VccLSVaBBvuvAHBJ6
3UwAn365v53Zzm2mK2CCWCaRbCxT+Kum
=LJol
-END PGP SIGNATURE-
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] ANN: filestore 0.1

2009-01-26 Thread Gwern Branwen
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA512

On Mon, Jan 26, 2009 at 5:35 AM, Thomas Davie  wrote:
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)

iEYEAREKAAYFAkl9zdAACgkQvpDo5Pfl1oKpawCdGc/rC5JOavHiUw/vpnrAkaqw
KmsAoJf7NgTWJyXMag7OH3uzA5JOpUa6
=kU/4
-END PGP SIGNATURE-


 On 26 Jan 2009, at 06:17, carmen wrote:

 back to the original topic of the thread..

 cool project,

 id be interested ina pure-FS backend as well,

 Indeed, very cool!

 Can I make another feature request – generalize how diffs are created, so
 that I could in theory parse the file contents, and then diff the CSTs
 rather than diffing text.

 Bob___

Well, if you look you see that 'diff' is in the Generic module; that
is, diff can be defined using the basic operators provided by the
backend. In this case, you 'diff' two versions by retrieving a
specific revision, storing it, and then retrieving the other specific
revision, storing it, and then filestore calls the Diff package on the
two Strings.

Nothing stops you from copying this approach and adding in a parsing
step and then passing it to a custom diff - as long as the backend
supplies 'retrieve', you're good.

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


Re: [Haskell-cafe] Haskell Web Framework

2009-01-26 Thread Michael Snoyman

 May i suggest Johan Tibell's web application interface (see
 http://github.com/tibbe/hyena/tree/master). It is similar to WSGI.
 Hyena can then be used as an application server and frameworks won't
 have to create their own servers. Many people have different opinions
 about web frameworks but a single very robust Haskell server would be
 an asset for all frameworks.


Thanks for the link, I'd never heard of it before. It might be a perfect
fit.
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] bug in System.Mem.StableName

2009-01-26 Thread Lennart Augustsson
I would not trust this weird combination of functions in ghci anyway.

2009/1/26 Alberto G. Corona agocor...@gmail.com:
 Sometimes the StableName library gives different values for the samr
 function: Sometines gives two alternate values. I checked it in ghc-6.10.1
 under windows and in ghc-6.8.2 under Linux:
 This is an example
 Prelude
 System.Mem.StableName.hashStableName.System.IO.Unsafe.unsafePerformIO $
  System.Mem.StableName.makeStableName (*)
 15
 Prelude
 System.Mem.StableName.hashStableName.System.IO.Unsafe.unsafePerformIO $
  System.Mem.StableName.makeStableName (*)
 14
 Prelude
 System.Mem.StableName.hashStableName.System.IO.Unsafe.unsafePerformIO $
  System.Mem.StableName.makeStableName (*)
 15
 Prelude
 System.Mem.StableName.hashStableName.System.IO.Unsafe.unsafePerformIO $
  System.Mem.StableName.makeStableName (*)
 14
 ___
 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


Re: [Haskell-cafe] Haskell Web Framework

2009-01-26 Thread Tim Newsham

those that want it. From my Django experience, I must say that very few
things are cooler than calling a script which automatically generates all
the boilerplate code inherent in every web app.


Cooler:  abstracting away the boilerplate.


Michael


Tim Newsham
http://www.thenewsh.com/~newsham/
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Haskell Web Framework

2009-01-26 Thread John A. De Goes


The best approach is to push as much functionality into the client as  
possible. The ideal server-side framework consists of nothing more  
than a permissions-based interface to persistence and network  
services. That's it. Everything else is done on the client side, in  
JavaScript.


Web designers can pretty easily style dynamically generated HTML, if  
the semantics are good -- you just need to let them capture that HTML  
in any given part of the application.


What this means is that effort is probably best directed at Yhc/ 
JavaScript and similar projects, which compile Haskell to JavaScript  
for execution on the client. Sure, some server-side work needs to be  
done, but it's extremely minimal. Far more needs to be done on the  
client-side. There's not many people working on that and the  
infrastructure is in need of more creative input and development  
resources.


Regards,

John A. De Goes
N-BRAIN, Inc.
The Evolution of Collaboration

http://www.n-brain.net|877-376-2724 x 101

On Jan 25, 2009, at 10:54 PM, Michael Snoyman wrote:

I´m working in a web application rather than a web framework. But I  
sometimes think about how a complete web application server should  
be. For my case, I don´t care about the presentation, because HSP is  
more than enough. However, I need active-active clustering,  
distributed transactions and workflows. I have created the module  
Workflow for the latter. For the former, I developped TCache, that  
is a transactional cache using STM, with configurable persistence. It 
´s like  hibernate for Java and (the data part of) Rails for Rubi.  
Now I´m working in a extension of TCache with distributed  
transactions and remote clustering with some additonal interesting  
characteristics.


That all sounds like something that would fit very nicely into this  
framework that I'm addressing.


My own view about haskell and Web applications is  that something   
like  a web framework is not in the philosophy of Haskell.  What  
is in the philosophy of Haskell is the creation of modules that the  
people can combine to create their own web frameworks.


I agree to a certain extent. If you look at the code that I've  
written so far, it's in layers. The bottom layer defines a Request  
and Response object, defines a service as Request - IO Response,  
and a server as something as essentially Service - IO (). The  
next layer is a controller which is itself a service. View details  
are built on top of this.


In your case, you could bypass all the controller logic if you like  
and simply deal with the server definition. You would get the  
advantage of having your app work as a standalone server, a CGI  
program, FastCGI, or anything else that people write adapters for.  
Someone else might decide to use the the controller and ignore the  
specialized view code (they really like dealing with straight  
Strings perhaps).


However, I think we should develop a full stack so that it is  
available for those that want it. From my Django experience, I must  
say that very few things are cooler than calling a script which  
automatically generates all the boilerplate code inherent in every  
web app. I think those features should be available to those who  
want it (even if it's not in the spirit of Haskell), while those who  
want to treat the framework as a set of libraries need not been  
hindered by the extra features.


Michael
___
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


Re: [Haskell-cafe] Haskell Web Framework

2009-01-26 Thread Michael Snoyman
On Mon, Jan 26, 2009 at 9:37 AM, John A. De Goes j...@n-brain.net wrote:


 The best approach is to push as much functionality into the client as
 possible. The ideal server-side framework consists of nothing more than a
 permissions-based interface to persistence and network services. That's it.
 Everything else is done on the client side, in JavaScript.

 Web designers can pretty easily style dynamically generated HTML, if the
 semantics are good -- you just need to let them capture that HTML in any
 given part of the application.

 What this means is that effort is probably best directed at Yhc/JavaScript
 and similar projects, which compile Haskell to JavaScript for execution on
 the client. Sure, some server-side work needs to be done, but it's extremely
 minimal. Far more needs to be done on the client-side. There's not many
 people working on that and the infrastructure is in need of more creative
 input and development resources.


That's great in theory, but then you end of with inaccessible web sites,
those without Javascript are left out in the cold, and search engines won't
index you. I think any framework should transparently make a site work the
way you describe and as plain HTML.
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Haskell Web Framework

2009-01-26 Thread John A. De Goes


We're talking about web applications and Web 2.0 sites, which is the  
principal target of Rails and its ilk. For primarily static content- 
oriented sites, static HTML works just fine, but even in this case,  
you can do dynamic transformations on the HTML in order to provide a  
richer, more user-friendly surfing experience.


It's only a matter of time until browsers provide better accessibility  
for web apps and search engines start indexing JavaScript-generated  
content.


The era of HTML templates and heavy server-side HTML is coming to a  
close, for all but static content-oriented websites. The whole  
industry is moving in a dynamic direction (along with developer tools  
and libraries), and it would be a shame if a bunch of Haskell  
developers got together to write a really great Haskell web framework  
for the Internet as it was 5 years ago.


Times have changed. Haskell - JavaScript is a much more fruitful  
direction to pursue, I think.


Regards,

John A. De Goes
N-BRAIN, Inc.
The Evolution of Collaboration

http://www.n-brain.net|877-376-2724 x 101

On Jan 26, 2009, at 10:49 AM, Michael Snoyman wrote:

On Mon, Jan 26, 2009 at 9:37 AM, John A. De Goes j...@n-brain.net  
wrote:


The best approach is to push as much functionality into the client  
as possible. The ideal server-side framework consists of nothing  
more than a permissions-based interface to persistence and network  
services. That's it. Everything else is done on the client side, in  
JavaScript.


Web designers can pretty easily style dynamically generated HTML, if  
the semantics are good -- you just need to let them capture that  
HTML in any given part of the application.


What this means is that effort is probably best directed at Yhc/ 
JavaScript and similar projects, which compile Haskell to JavaScript  
for execution on the client. Sure, some server-side work needs to be  
done, but it's extremely minimal. Far more needs to be done on the  
client-side. There's not many people working on that and the  
infrastructure is in need of more creative input and development  
resources.


That's great in theory, but then you end of with inaccessible web  
sites, those without Javascript are left out in the cold, and search  
engines won't index you. I think any framework should transparently  
make a site work the way you describe and as plain HTML.


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


Re: [Haskell-cafe] ANN: filestore 0.1

2009-01-26 Thread zooko
I wonder if Bulat Ziganshin's FreeARC software could serve as a back- 
end to the filestore API, and if it did what sort of time and space  
performance it would have.


And if it was good, then I wonder if it could then be used by  
darcs.  :-)


Regards,

Zooko

On Jan 24, 2009, at 17:19 PM, Bulat Ziganshin wrote:


Hello Gwern,

Sunday, January 25, 2009, 2:56:07 AM, you wrote:

my usual complaint: it will be great to see all announces duplicated
in main haskell list


ANN filestore 0.1


We are pleased to announce the first release of a new library,  
filestore.


What is it?  filestore provides a uniform, abstract, generic  
interface for
storing versioned files on disk.  It allows calling programs to  
use generic

commands to store strings or binary data and perform various queries,
such as 'what files are in this repository?' or 'what were the  
contents
of this file at revision XXX?' or 'give me a diff of this file  
between
revision XXX and revision YYY.'  Because the interface is  
abstract,
the calling program is insulated from the messy details of the  
backend

(which might be a VCS or a database).


What backends are supported? Darcs and Git are fully supported.  
There are

plans for a SQLite backend.



What is this good for? Currently it is used by two wikis, Gitit and
Orchid. We hope it will see use in other applications as well that
need to version data and would like the various advantages of DVCSs
(such as easy collaboration, advanced merging, etc.).



Where can you get it? Your local cabal-install, Hackage at
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/filestore
and of course you can do 'darcs get
http://johnmacfarlane.net/repos/filestore' for the very latest.


filestore was written by John MacFarlane, Gwern Branwen, and  
Sebastiaan Visser





--
Best regards,
 Bulatmailto:bulat.zigans...@gmail.com

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


---
Tahoe, the Least-Authority Filesystem -- http://allmydata.org
store your data: $10/month -- http://allmydata.com/?tracking=zsig

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


[Haskell-cafe] Ann: Progress with IDE

2009-01-26 Thread Jürgen Nicklisch-Franken
Leksah 0.4.0* pre-release is now available. This will become the first
beta when it is stable enough.

The current feature list:
  * Haskell customized editor with candy
  * Project management support based on Cabal
  * Visual editor for Cabal files
  * Location of compilation errors
  * Import helper, which writes the import statements
  * Navigation to definition
  * Module browser
  * Information about types and comments
  * Search for identifiers
  * Session support
  * Configurable visual appearance
  * Configurable keymaps

Get more info at:  http://www.leksah.org

We now have a mailing list for Leksah:
http://projects.haskell.org/cgi-bin/mailman/listinfo/leksah

You need ghc 6.10 and gtk2hs 0.10 (which is not yet released, but you
get it here: http://code.haskell.org/~pgavin/gtk2hs-0.10.0/ )

Please test Leksah and give me feedback. Contributors welcome.

Jürgen

--keksa leksa haksel--



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


Re: [Haskell-cafe] ANN: filestore 0.1

2009-01-26 Thread Gwern Branwen
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA512

On Mon, Jan 26, 2009 at 1:52 PM, zooko  wrote:
 I wonder if Bulat Ziganshin's FreeARC software could serve as a back-end to
 the filestore API, and if it did what sort of time and space performance it
 would have.

 And if it was good, then I wonder if it could then be used by darcs.  :-)

 Regards,

 Zooko

I'd say there're a few roadblocks before this route is pursued any
further. For example, looking at the FreeArc website, I see that there
is apparently no 64-bit version. Which is an issue.

- --
gwern
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)

iEYEAREKAAYFAkl+HIwACgkQvpDo5Pfl1oKHuQCfSJk9mNHfBEmwcNorNANOdsZ0
MZsAmgJlkCGC5ehagUX9/hmCcbkJfoIX
=NhqH
-END PGP SIGNATURE-
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Re: Ann: Progress with IDE

2009-01-26 Thread Gwern Branwen
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA512

On Mon, Jan 26, 2009 at 3:05 PM, Jürgen Nicklisch-Franken  wrote:
 Leksah 0.4.0* pre-release is now available. This will become the first
 beta when it is stable enough.

 The current feature list:
  * Haskell customized editor with candy
  * Project management support based on Cabal
  * Visual editor for Cabal files
  * Location of compilation errors
  * Import helper, which writes the import statements
  * Navigation to definition
  * Module browser
  * Information about types and comments
  * Search for identifiers
  * Session support
  * Configurable visual appearance
  * Configurable keymaps

 Get more info at:  http://www.leksah.org

 We now have a mailing list for Leksah:
 http://projects.haskell.org/cgi-bin/mailman/listinfo/leksah

 You need ghc 6.10 and gtk2hs 0.10 (which is not yet released, but you
 get it here: http://code.haskell.org/~pgavin/gtk2hs-0.10.0/ )

 Please test Leksah and give me feedback. Contributors welcome.

 Jürgen

 --keksa leksa haksel--

I tried using that gtk2hs tarball. make eventually errored out as:

Reading package info from stdin ... done.
cannot find libHSgstreamer.a on library path (ignoring)
Writing new package config file... done.
touch tools/c2hs/c2hsLocal.deps;  /home/gwern/bin/bin/ghc -M
- -dep-makefile -optdeptools/c2hs/c2hsLocal.deps -fglasgow-exts -O
- 
-itools/c2hs/base/admin:tools/c2hs/base/errors:tools/c2hs/base/general:tools/c2hs/base/state:tools/c2hs/base/syms:tools/c2hs/base/syntax:tools/c2hs/c:tools/c2hs/chs:tools/c2hs/gen:tools/c2hs/state:tools/c2hs/toplevel
- -package-conf package.conf.inplace -hide-all-packages  -package
base-4.0.0.0 -package haskell98-1.0.1.0 -package pretty-1.0.1.0
- -package containers-0.2.0.0 -package array-0.2.0.0
tools/c2hs/base/admin/BaseVersion.hs tools/c2hs/base/admin/Config.hs
tools/c2hs/base/errors/Errors.hs tools/c2hs/base/general/DLists.hs
tools/c2hs/base/general/FileOps.hs tools/c2hs/base/general/FNameOps.hs
tools/c2hs/base/general/Map.hs tools/c2hs/base/general/Position.hs
tools/c2hs/base/general/Set.hs tools/c2hs/base/general/UNames.hs
tools/c2hs/base/general/Binary.hs
tools/c2hs/base/general/FastMutInt.hs tools/c2hs/base/state/CIO.hs
tools/c2hs/base/state/StateBase.hs tools/c2hs/base/state/State.hs
tools/c2hs/base/state/StateTrans.hs tools/c2hs/base/syms/Attributes.hs
tools/c2hs/base/syms/Idents.hs tools/c2hs/base/syms/NameSpaces.hs
tools/c2hs/base/syntax/Lexers.hs tools/c2hs/c/CAST.hs
tools/c2hs/c/CAttrs.hs tools/c2hs/c/CBuiltin.hs tools/c2hs/c/C.hs
tools/c2hs/c/CLexer.hs tools/c2hs/c/CNames.hs tools/c2hs/c/CParser.hs
tools/c2hs/c/CParserMonad.hs tools/c2hs/c/CPretty.hs
tools/c2hs/c/CTokens.hs tools/c2hs/c/CTrav.hs tools/c2hs/chs/CHS.hs
tools/c2hs/chs/CHSLexer.hs tools/c2hs/gen/CInfo.hs
tools/c2hs/gen/GBMonad.hs tools/c2hs/gen/GenBind.hs
tools/c2hs/gen/GenHeader.hs tools/c2hs/state/C2HSState.hs
tools/c2hs/state/Switches.hs tools/c2hs/toplevel/Main.hs
tools/c2hs/toplevel/Version.hs tools/c2hs/toplevel/C2HSConfig.hs;
./mk/chsDepend -i:glib glib/System/Glib/Types.chs
./mk/chsDepend -i:glib glib/System/Glib/GType.chs
./mk/chsDepend -i:glib glib/System/Glib/GValue.chs
./mk/chsDepend -i:glib glib/System/Glib/GValueTypes.chs
gcc -E -x c -traditional-cpp -I/usr/include/glib-2.0
- -I/usr/lib/glib-2.0/include -DGTK2HS_HS_PREPROC -include
gtk2hs-config.h glib/System/Glib/GObject.chs.pp -o
glib/System/Glib/GObject.chs
glib/System/Glib/GObject.chs.pp:38: error: missing expression between
'(' and ')'
glib/System/Glib/GObject.chs.pp:91: error: missing expression between
'(' and ')'
make: *** [glib/System/Glib/GObject.chs] Error 1

Any suggestions?

- --
gwern
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)

iEYEAREKAAYFAkl+LQQACgkQvpDo5Pfl1oIvkwCdEALTIIHJkJ3q5vM0bEbIRVnl
9rEAnRgYfgvdTsnzhfkGdxV9wUS6ORM0
=G6cf
-END PGP SIGNATURE-
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Why binding to existing widget toolkits doesn't make any sense

2009-01-26 Thread Achim Schneider
Hacking away on bindings to (http://libagar.org), specifically
(http://libagar.org/mdoc.cgi?man=AG_Object.3), I was suddenly swept
away by a general crisis of purpose: I was spending time on figuring out
how to create agar objects, implemented in Haskell, on the fly, to
enable me to write a high-level interface, instead of spending time on
designing The FRUI API To Obsolete Them All.

The reason for this are means of composability: What use is a nice
interface to a button and an isomorphic interface to a textbox, if I
can't compose them properly? Users might want to use standard widgets
in indefinitely many combinations of type, with an equal amount of
distinct wirings and external interfaces.

As some of you might have noticed [1][2], constructing foreign objects
is painful, specifying custom classes even more so... in case it's not
infeasible hard to support in the first place. In agar's case it's
certainly possible, by the virtue of being implemented in plain C.

So we _could_ expose the whole generality of a TK's means of composing
to the user. Which is most likely not what he wants, he wants to use
the whole generality of Haskell to compose UI's. In Agar's case, the
user won't care much about generating N checkboxes for a bitfield
integer, he'd rather use [Event Bool].

Summing up, there's a lot of plumbing to be done, in the end still
amounting to a lot of dead, unused code in the TK, BECAUSE TOOLKITS ARE
DESIGNED TO BE USED IN THE LANGUAGE THEY WERE BLEEDING WRITTEN IN AND
PROVIDE CUSTOM ABSTRACTIONS TAILORED TO THAT LANGUAGE. This is basically
the Saphir-Worph hypothesis adapted to programs.

So what's left of those TK's if we don't use their abstractions and
replace them with Haskell? Drawing and layouting, that's what's
left[3]. Both, IMNSHO, do not justify carrying around bloaty external
dependencies, they're too trivial. They certainly don't justify using
unsafePerformIO to hide foreign side effects and the headaches
associated with it.


So, if you don't mind, I'm going to stop trying to fit cubes into
round holes and gonna use reactive and fieldtrip[4] to do things.


[1]http://softbase.org/hqk/qoo/qoo.pdf
[2]http://haskell.org/gtk2hs/docs/devel/System-Glib-GObject.html#v%3AmakeNewGObject
[3]Somewhat disregarding using OS widgets, but that's unimportant since
   native look+feel is vastly overrated. I've got enough asbestos to
   defend that against alt.politics.
[4]Gotta get rid of glut, though.

-- 
(c) this sig last receiving data processing entity. Inspect headers
for copyright history. All rights reserved. Copying, hiring, renting,
performance and/or quoting of this signature prohibited.


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


Re: [Haskell-cafe] Re: Ann: Progress with IDE

2009-01-26 Thread Duncan Coutts
On Mon, 2009-01-26 at 16:37 -0500, Gwern Branwen wrote:

 I tried using that gtk2hs tarball. make eventually errored out as:

 glib/System/Glib/GObject.chs.pp:38: error: missing expression between
 '(' and ')'
 glib/System/Glib/GObject.chs.pp:91: error: missing expression between
 '(' and ')'
 make: *** [glib/System/Glib/GObject.chs] Error 1
 
 Any suggestions?

I've seen this occasionally. If you check gtk2hs-confg.h near the bottom
of the file you'll likely find something like

#def _GLIB_MAJOR_VERSION ()

rather than

#def _GLIB_MAJOR_VERSION (2)

It is ./configure that generates the gtk2hs-confg.h from
gtk2hs-confg.h.in based on tests in configure.ac. I've never been able
to reproduce it and when others have helped me investigate we did not
find a solution or indeed a cause.

If you'd like to do some digging it'd be much appreciated. I'm cc'ing
the gtk2hs-users list just in case someone else has already diagnosed
this.

Duncan

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


Re: [Haskell-cafe] Re: Ann: Progress with IDE

2009-01-26 Thread Gwern Branwen
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA512

On Mon, Jan 26, 2009 at 8:07 PM, Duncan Coutts  wrote:
 On Mon, 2009-01-26 at 16:37 -0500, Gwern Branwen wrote:

 I tried using that gtk2hs tarball. make eventually errored out as:

 glib/System/Glib/GObject.chs.pp:38: error: missing expression between
 '(' and ')'
 glib/System/Glib/GObject.chs.pp:91: error: missing expression between
 '(' and ')'
 make: *** [glib/System/Glib/GObject.chs] Error 1

 Any suggestions?

 I've seen this occasionally. If you check gtk2hs-confg.h near the bottom
 of the file you'll likely find something like

 #def _GLIB_MAJOR_VERSION ()

 rather than

 #def _GLIB_MAJOR_VERSION (2)

 It is ./configure that generates the gtk2hs-confg.h from
 gtk2hs-confg.h.in based on tests in configure.ac. I've never been able
 to reproduce it and when others have helped me investigate we did not
 find a solution or indeed a cause.

 If you'd like to do some digging it'd be much appreciated. I'm cc'ing
 the gtk2hs-users list just in case someone else has already diagnosed
 this.

 Duncan

Yes, that file does seem broken in the way you describe. Starting at line 132:

/* Glib major version */
#define _GLIB_MAJOR_VERSION ()

/* Glib micro version */
#define _GLIB_MICRO_VERSION ()

/* Glib minor version */
#define _GLIB_MINOR_VERSION ()

/* gnome-vfs major version */
#define _GNOME_VFS_MAJOR_VERSION ()

/* gnome-vfs micro version */
#define _GNOME_VFS_MICRO_VERSION ()

/* gnome-vfs minor version */
#define _GNOME_VFS_MINOR_VERSION ()

/* gstreamer major version */
#define _GST_MAJOR_VERSION ()

/* gstreamer micro version */
#define _GST_MICRO_VERSION ()

/* gstreamer minor version */
#define _GST_MINOR_VERSION ()

/* gtksourceview2 major version */
#define _GTKSOURCEVIEW2_MAJOR_VERSION ()

/* gtksourceview2 micro version */
#define _GTKSOURCEVIEW2_MICRO_VERSION ()

/* gtksourceview2 minor version */
#define _GTKSOURCEVIEW2_MINOR_VERSION ()

/* Gtk+ major version */
#define _GTK_MAJOR_VERSION ()

/* Gtk+ micro version */
#define _GTK_MICRO_VERSION ()

/* Gtk+ minor version */
#define _GTK_MINOR_VERSION ()

/* librsvg major version */
#define _LIBRSVG_MAJOR_VERSION ()

/* librsvg micro version */
#define _LIBRSVG_MICRO_VERSION ()

/* librsvg minor version */
#define _LIBRSVG_MINOR_VERSION ()

/* Pango major version */
#define _PANGO_MAJOR_VERSION ()

/* Pango micro version */
#define _PANGO_MICRO_VERSION ()

/* Pango minor version */
#define _PANGO_MINOR_VERSION ()

That all looks quite broken.

I'm afraid I don't know enough about autotools to figure this out.
However, I've put up a tarball of the gtk directory just after a make
failed, at http://code.haskell.org/~gwern/gtk-broken.tar.gz so people
can look at it themselves?

- --
gwern
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)

iEYEAREKAAYFAkl+cvcACgkQvpDo5Pfl1oLXwACgl2V427baEPYV3AHwnTZH2W5D
wlMAoJgqQdUjBHCIi01UHlvtyQUyifMa
=INxD
-END PGP SIGNATURE-
/* gtk2hs-config.h.  Generated from gtk2hs-config.h.in by configure.  */
/* gtk2hs-config.h.in.  Generated from configure.ac by autoheader.  */


/* Hack to suppress warnings that these symbols clash with
   the ones from ghc's version of config.h */
#undef /**/ PACKAGE_NAME
#undef /**/ PACKAGE_STRING
#undef /**/ PACKAGE_TARNAME
#undef /**/ PACKAGE_VERSION


/* Leave out all deprecated functions. */
/* #undef DISABLE_DEPRECATED */

/* Whether or not the cairo package is available. */
#define ENABLE_CAIRO 

/* cairo pdf backend enabled */
#define ENABLE_CAIRO_PDF_SURFACE 

/* cairo png functions available */
#define ENABLE_CAIRO_PNG_FUNCTIONS 

/* cairo ps backend enabled */
#define ENABLE_CAIRO_PS_SURFACE 

/* cairo svg backend enabled */
#define ENABLE_CAIRO_SVG_SURFACE 

/* Whether or not the firefox package is available. */
/* #undef ENABLE_FIREFOX_MOZEMBED */

/* Whether or not the gconf package is available. */
#define ENABLE_GCONF 

/* Whether or not the gio package is available. */
#define ENABLE_GIO 

/* Whether or not the gnomevfs package is available. */
#define ENABLE_GNOMEVFS 

/* Whether or not the gstreamer package is available. */
#define ENABLE_GSTREAMER 

/* Whether or not the gtk package is available. */
#define ENABLE_GTK 

/* Whether or not the opengl package is available. */
#define ENABLE_GTKGLEXT 

/* Whether or not the gtksourceview2 package is available. */
/* #undef ENABLE_GTKSOURCEVIEW2 */

/* Whether or not the libglade package is available. */
#define ENABLE_LIBGLADE 

/* Whether or not the mozilla package is available. */
#define ENABLE_MOZILLA_MOZEMBED 

/* Whether or not the seamonkey package is available. */
/* #undef ENABLE_SEAMONKEY_MOZEMBED */

/* Whether or not the sourceview package is available. */
#define ENABLE_SOURCEVIEW 

/* Whether or not the svg package is available. */
#define ENABLE_SVGCAIRO 

/* Whether or not the xulrunner package is available. */
/* #undef ENABLE_XULRUNNER_MOZEMBED */

/* Omit deprecated gdk functions. */
/* #undef GDK_DISABLE_DEPRECATED */

/* Omit deprecated 

[Haskell-cafe] ANN: convertible (first release)

2009-01-26 Thread John Goerzen
Hi folks,

I have uploaded a new package to Haskell: convertible.  At its heart,
it's a very simple typeclass that's designed to enable a reasonable
default conversion between two different types without having to
remember a bunch of functions.

The return type from this conversion is Either ConvertError a, and
conversions are expected to do sanity checking (such as bounds
checking when converting to types like Int), so as to produce neither
garbage nor exceptions as part of the conversion process.

The package also includes instances of the Convertible typeclass for
working with numeric types as well as dates and times.  Notably, it
has code to convert between System.Time types and their Data.Time
siblings, and vice versa, a capability I found annoyingly lacking in
the standard library.

There is also a simple wrapper function called convert, that
transforms a Left result into a call to error, and returns a Right
result.

For HDBC v2.0, the SqlValue/SqlType system has been completely
rewritten in terms of Convertible, though I expect backwards
compatibility will not be broken by this change (existing code will
compile and run fine).  I hope to release v2.0 of the HDBC API and
backends in a few days.

Convertible is not for everyone; if you care whether you use truncate
or round to convert a Double to an Integer, this isn't for you.  Note,
though, that you can import the library without its default instances,
so you can define your own if you prefer.

API docs and downloads at:

http://hackage.haskell.org/cgi-bin/hackage-scripts/package/convertible

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


[Haskell-cafe] ANN: testpack (first release)

2009-01-26 Thread John Goerzen
Hi,

I've just uploaded testpack to Hackage.  It's a collection of a few
utilities for tests: some tools to convert QuickCheck properties into
HUnit test cases, and various shortcuts and tools to increase
verbosity while running tests in both QuickCheck and HUnit.

It is pulled partly from MissingH (a few modules being split off), and
partly from functions I find myself writing over and over again.

API docs and downloads at:

http://hackage.haskell.org/cgi-bin/hackage-scripts/package/testpack

Like convertible, it should be compatible with Hugs, GHC 6.8, and GHC
6.10.

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


[Haskell-cafe] foreign function types

2009-01-26 Thread Eyal Lotem
I have encountered quite a bit of bugs in foreign bindings where Int was
used in place of Cint.

As far as I know, no foreign function should ever take a Haskell Int, only
CInts.

Would it be possible to create an empty type-class of which various
C-acceptable types are instances (e.g CInt, CString) but Haskell types
aren't (Ints)?

I am not sure this is the right solution, but I think the problem of
accidentally using Int in place of CInt should be solved so that
compile-time errors are received, as for x86-32 systems, no compile time or
even runtime error will be issued. It will wait and crash when run on an
x86-64 system.

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


[Haskell-cafe] ANN: Wired 0.2

2009-01-26 Thread Emil Axelsson

There is now a new release of Wired available:

  http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Wired

The most important news in this release is that it now contains a 45nm
cell library, which means that you can use Wired to create and analyze
modern VLSI designs[*] today!

However...

Wired is still in the experimentation phase, but is slowly stabilizing.
The current status is further explained in the package text. There's
very little documentation (basically only a few examples), so I expect
it to be quite hard to use if you haven't seen it before. I hope to
improve the documentation in the future. Feel free to mail me questions
meanwhile.

/ Emil


[*] Unfortunately, while the 45nm library is realistic, it's not based
on any actual process that can be fabricated. Contact me if you have
access to any real cell library and are interested in using it with Wired.


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