[Haskell-cafe] Re: I still cannot seem to get a GUI working under Windows.

2010-10-02 Thread Heinrich Apfelmus

Jeremy O'Donoghue wrote:

Apologies folks, rant coming up...
[...] 


Bear in mind that as I have a (very) demanding day job and a young
family, I actually have no more than 3-4 hours a week (at best) to spend
maintaining wxHaskell. Bear in mind also that my interest in wxHaskell
was always to be able to develop software in Haskell, not fight with
linkers and build systems (I get enough of that at work, thanks). While
that's my personal problem, and others may not have the same issues, so
please feel free to not care at all, it's worth bearing in mind...

wxHaskell consists of a set of C bindings over the C++ core of
wxWidgets. Broadly speaking, these unmangle the C++ names and do little
else. 


[...]

Actually, I don't completely agree. I think that the issue is that
making things better on Windows (and likely OS X as well) requires
co-ordinated and agreed action across a number of areas. This means
getting a moderate number of people, most of whom give up their time and
effort for free, and for the good of the community, to agree on what is
needed and to prioritize it in a co-ordinated way. The action needed by
any individual might be relatively small, but without community
agreement and action, the end goal cannot be achieved.


Jeremy, I very much appreciate your efforts as a maintainer of
wxHaskell, even more so after I have begun to write a small helper
application for my video stuff (which is a bit stalled now because I
didn't have the courage to wrestle with wxGraphicsContext to get
antialiased drawings).

Would you put a flattr button [1] on the wxHaskell page? This way,
people like me would be able to show their appreciation by donating a
small amount of *money*. Granted, it is not much and certainly does not
help with any of your external constraints, but it is a more forthright
form of showing that your work is valued than a silent download or
virtual nod.

  [1]: http://flattr.com


Regards,
Heinrich Apfelmus

--
http://apfelmus.nfshost.com



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


Re: [Haskell-cafe] Re: I still cannot seem to get a GUI working under Windows.

2010-10-02 Thread Bulat Ziganshin
Hello Heinrich,

Saturday, October 2, 2010, 1:36:48 PM, you wrote:

 Would you put a flattr button [1] on the wxHaskell page? This way,
 people like me would be able to show their appreciation by donating a

this page doesn't describe how to pay and how to got the money
received. if Jeremy lives in right country, i suggest to use PayPal
donations system. it allows to pay by credit card and then receive money
to author's credit card

PayPal provides you the donation button like one i used at
http://freearc.org/Donations.aspx 


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

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


Re: [Haskell-cafe] Re: I still cannot seem to get a GUI working under Windows.

2010-10-02 Thread Luke Palmer
On Sat, Oct 2, 2010 at 4:32 AM, Bulat Ziganshin
bulat.zigans...@gmail.com wrote:
 Hello Heinrich,

 Saturday, October 2, 2010, 1:36:48 PM, you wrote:

 Would you put a flattr button [1] on the wxHaskell page? This way,
 people like me would be able to show their appreciation by donating a

 this page doesn't describe how to pay and how to got the money
 received. if Jeremy lives in right country, i suggest to use PayPal
 donations system. it allows to pay by credit card and then receive money
 to author's credit card

Because of the way flattr distributes my money (i.e. donating has 0
marginal cost to me), I am much more likely to donate using flattr
than paypal.

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


Re: [Haskell-cafe] Re: I still cannot seem to get a GUI working under Windows.

2010-10-02 Thread Vo Minh Thu
2010/10/2 Luke Palmer lrpal...@gmail.com:
 On Sat, Oct 2, 2010 at 4:32 AM, Bulat Ziganshin
 bulat.zigans...@gmail.com wrote:
 Hello Heinrich,

 Saturday, October 2, 2010, 1:36:48 PM, you wrote:

 Would you put a flattr button [1] on the wxHaskell page? This way,
 people like me would be able to show their appreciation by donating a

 this page doesn't describe how to pay and how to got the money
 received. if Jeremy lives in right country, i suggest to use PayPal
 donations system. it allows to pay by credit card and then receive money
 to author's credit card

 Because of the way flattr distributes my money (i.e. donating has 0
 marginal cost to me), I am much more likely to donate using flattr
 than paypal.

Is it right that by using flattr, you end up donating the same amount
of money to every flattred person in a month? So you can donate more
the previous month to some project you value less than another project
the next month. This seems weird to me.

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


Re: [Haskell-cafe] Re: I still cannot seem to get a GUI working under Windows.

2010-10-02 Thread Peter Verswyvelen
Regarding GUIs, I really miss a pure functional framework for doing so.

Currently I'm using Microsoft's WPF, and that is more or less declarative, a
bit like BOOPSI or MUI on the good old Amiga days. But WPF has so many
little quirks, not to mentioned a weakly typed XML-like language called
XAML.  Still it offers the best experiences I had so far, because it is
very composable.

What I would love is to build GUIs the Fruit/Yampa or maybe Reactive/Elerea
way, using a graphical editor if possible. And allow separation of data
(model and view-model) and looks (styling, CSS, themes...)

Oh and it should preferably make use of the GPU as much as possible, where
it makes sense at least.

Anyway knows about such a framework in Haskell? It's a gigantic undertaking,
but maybe if someone can make the basic framework, others in the community
will develop controls for it?

Cheers,
Peter Verswyvelen

On Sat, Oct 2, 2010 at 1:20 PM, Vo Minh Thu not...@gmail.com wrote:

 2010/10/2 Luke Palmer lrpal...@gmail.com:
  On Sat, Oct 2, 2010 at 4:32 AM, Bulat Ziganshin
  bulat.zigans...@gmail.com wrote:
  Hello Heinrich,
 
  Saturday, October 2, 2010, 1:36:48 PM, you wrote:
 
  Would you put a flattr button [1] on the wxHaskell page? This way,
  people like me would be able to show their appreciation by donating a
 
  this page doesn't describe how to pay and how to got the money
  received. if Jeremy lives in right country, i suggest to use PayPal
  donations system. it allows to pay by credit card and then receive money
  to author's credit card
 
  Because of the way flattr distributes my money (i.e. donating has 0
  marginal cost to me), I am much more likely to donate using flattr
  than paypal.

 Is it right that by using flattr, you end up donating the same amount
 of money to every flattred person in a month? So you can donate more
 the previous month to some project you value less than another project
 the next month. This seems weird to me.

 Cheers,
 Thu
 ___
 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] Re: I still cannot seem to get a GUI working under Windows.

2010-10-02 Thread Kurt Häusler

On Oct 2, 2010, at 3:30 PM, Peter Verswyvelen wrote:

 Regarding GUIs, I really miss a pure functional framework for doing so.
 
 Currently I'm using Microsoft's WPF, and that is more or less declarative, a 
 bit like BOOPSI or MUI on the good old Amiga days. But WPF has so many little 
 quirks, not to mentioned a weakly typed XML-like language called XAML.  
 Still it offers the best experiences I had so far, because it is very 
 composable.

Are you using WPF with C# or F#? With F# it can feel pretty 
functional.___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Re: I still cannot seem to get a GUI working under Windows.

2010-10-02 Thread Heinrich Apfelmus

Vo Minh Thu wrote:

Is it right that by using flattr, you end up donating the same amount
of money to every flattred person in a month?


Yes.


So you can donate more
the previous month to some project you value less than another project
the next month. This seems weird to me.


That's the price of the vanishing marginal cost of flattr donations. :)

But how about putting it this way: isn't it great that you no longer 
have to worry about attributing fair values to each project, since this 
cognitive burden would make you less likely of donating in the first 
place? ;)


Personally, I revisit projects I value a lot every month anyway, which 
boils down to a larger share in the end.



Regards,
Heinrich Apfelmus

--
http://apfelmus.nfshost.com

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


[Haskell-cafe] Re: I still cannot seem to get a GUI working under Windows.

2010-10-02 Thread Heinrich Apfelmus

Peter Verswyvelen wrote:

Regarding GUIs, I really miss a pure functional framework for doing so.


We all do, we all do. ;)


Currently I'm using Microsoft's WPF, and that is more or less declarative, a
bit like BOOPSI or MUI on the good old Amiga days. But WPF has so many
little quirks, not to mentioned a weakly typed XML-like language called
XAML.  Still it offers the best experiences I had so far, because it is
very composable.

What I would love is to build GUIs the Fruit/Yampa or maybe Reactive/Elerea
way, using a graphical editor if possible. And allow separation of data
(model and view-model) and looks (styling, CSS, themes...)

Oh and it should preferably make use of the GPU as much as possible, where
it makes sense at least.

Anyway knows about such a framework in Haskell? It's a gigantic undertaking,
but maybe if someone can make the basic framework, others in the community
will develop controls for it?


I have concocted a tiny FRP library for my little wxHaskell project, 
which works quite nicely. Its main feature is that it can hook into any 
part of wxHaskell; thanks to higher-order functions, there is absolutely 
no need to duplicate the GUI API. In a sense, the point is that FRP is 
just a different way of talking about callback functions.


It is by no means finished, though, and my project has currently hit a 
snag because wxHaskell's support for antialiased graphics routines is 
still in its infancy. No idea how to proceed yet.



Regards,
Heinrich Apfelmus

--
http://apfelmus.nfshost.com

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


Re: [Haskell-cafe] Re: I still cannot seem to get a GUI working under Windows.

2010-10-02 Thread Conal Elliott
For another model of GUIs, see Tangible Values (
http://www.haskell.org/haskellwiki/TV), which is composable MVC.

And amen to targeting GPUs.

In addition to getting clunky, imperative GUI frameworks like wx  gtk
working robustly and easily in Haskell across platforms, I'd love to see
more powerful, functional-friendly re-thinking of UIs.  And if a new
generation of GUIs comes out scrapping legacy toolkits, and the look is not
what people are used to, then exploiting GPUs and good visual design could
lead to something that looks better and is more fun to use.

I imagine someone looking at a lovely app and saying, Wow -- great
interface!  I bet it was programmed in Haskell.

   - Conal

On Sat, Oct 2, 2010 at 6:30 AM, Peter Verswyvelen bugf...@gmail.com wrote:

 Regarding GUIs, I really miss a pure functional framework for doing so.

 Currently I'm using Microsoft's WPF, and that is more or less declarative,
 a bit like BOOPSI or MUI on the good old Amiga days. But WPF has so many
 little quirks, not to mentioned a weakly typed XML-like language called
 XAML.  Still it offers the best experiences I had so far, because it is
 very composable.

 What I would love is to build GUIs the Fruit/Yampa or maybe Reactive/Elerea
 way, using a graphical editor if possible. And allow separation of data
 (model and view-model) and looks (styling, CSS, themes...)

 Oh and it should preferably make use of the GPU as much as possible, where
 it makes sense at least.

 Anyway knows about such a framework in Haskell? It's a gigantic
 undertaking, but maybe if someone can make the basic framework, others in
 the community will develop controls for it?

 Cheers,
 Peter Verswyvelen

 On Sat, Oct 2, 2010 at 1:20 PM, Vo Minh Thu not...@gmail.com wrote:

 2010/10/2 Luke Palmer lrpal...@gmail.com:
  On Sat, Oct 2, 2010 at 4:32 AM, Bulat Ziganshin
  bulat.zigans...@gmail.com wrote:
  Hello Heinrich,
 
  Saturday, October 2, 2010, 1:36:48 PM, you wrote:
 
  Would you put a flattr button [1] on the wxHaskell page? This way,
  people like me would be able to show their appreciation by donating a
 
  this page doesn't describe how to pay and how to got the money
  received. if Jeremy lives in right country, i suggest to use PayPal
  donations system. it allows to pay by credit card and then receive
 money
  to author's credit card
 
  Because of the way flattr distributes my money (i.e. donating has 0
  marginal cost to me), I am much more likely to donate using flattr
  than paypal.

 Is it right that by using flattr, you end up donating the same amount
 of money to every flattred person in a month? So you can donate more
 the previous month to some project you value less than another project
 the next month. This seems weird to me.

 Cheers,
 Thu
 ___
 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 mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Lambda-case / lambda-if

2010-10-02 Thread Max Bolingbroke
Hi Cafe,

I implemented the proposed Haskell' feature lambda-case/lambda-if [1]
during the Haskell Implementors Workshop yesterday for a bit of fun.
The patches are online [2, 3].

The feature is demonstrated in this GHCi session:

$ inplace/bin/ghc-stage2 --interactive -XLambdaCase
GHCi, version 7.1.20101002: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
Prelude (if then Haskell else Cafe) False
Cafe
Prelude (case of 1 - One; _ - Not-one) 1
One
Prelude :q

Do you like this feature and think it would be worth incorporating
this into GHC? Or is it too specialised to be of use? If there is
enough support, I'll create a ticket and see what GHC HQ make of it.

Max

[1] http://hackage.haskell.org/trac/haskell-prime/ticket/41
[2] http://www.omega-prime.co.uk/files/LambdaCase-Testsuite.patch
[3] http://www.omega-prime.co.uk/files/LambdaCase-Compiler.patch
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Lambda-case / lambda-if

2010-10-02 Thread Colin Paul Adams
 Max == Max Bolingbroke batterseapo...@hotmail.com writes:

Prelude (if then Haskell else Cafe) False
Max Cafe

My reaction is to ask:

Can you write this as:

(if then else) False  Haskell  Cafe

?
-- 
Colin Adams
Preston Lancashire
()  ascii ribbon campaign - against html e-mail
/\  www.asciiribbon.org   - against proprietary attachments
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Lambda-case / lambda-if

2010-10-02 Thread Henning Thielemann


On Sat, 2 Oct 2010, Max Bolingbroke wrote:


Hi Cafe,

I implemented the proposed Haskell' feature lambda-case/lambda-if [1]
during the Haskell Implementors Workshop yesterday for a bit of fun.
The patches are online [2, 3].

The feature is demonstrated in this GHCi session:

$ inplace/bin/ghc-stage2 --interactive -XLambdaCase
GHCi, version 7.1.20101002: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
Prelude (if then Haskell else Cafe) False
Cafe
Prelude (case of 1 - One; _ - Not-one) 1
One
Prelude :q

Do you like this feature and think it would be worth incorporating
this into GHC? Or is it too specialised to be of use? If there is
enough support, I'll create a ticket and see what GHC HQ make of it.


Nice! Concerning if-then-else I would more like to see an according 
function to go to Data.Bool, then we won't need more syntactic sugar like 
if-then-else. However the lambda-case would be useful for me.

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


Re: [Haskell-cafe] Lambda-case / lambda-if

2010-10-02 Thread Henning Thielemann


On Sat, 2 Oct 2010, Colin Paul Adams wrote:


Max == Max Bolingbroke batterseapo...@hotmail.com writes:


   Prelude (if then Haskell else Cafe) False
   Max Cafe

My reaction is to ask:

Can you write this as:

(if then else) False  Haskell  Cafe

?


Sure:

ifThenElse :: Bool - a - a - a
ifThenElse True  x _ = x
ifThenElse False _ y = y

Prelude ifThenElse False Haskell Cafe

(I have done this in utility-ht, and called it if'.)
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: happstack-ixset internals/performance (was Re: [Haskell-cafe] Inverse of HaskellDB)

2010-10-02 Thread Jeremy Shaw
In the current version of IxSet, the performance of querying on just
the Lon would be essentially the same as if you just had a Data.Map
Lon Point. But the queries on the second index are current not so
great. There is work in progress to rewrite the internals of IxSet to
be based on a kd-tree, in which case your query should be pretty
efficient.

So, that answer is pretty vague :) I am in the process of wrapping up
happstack 0.6 which has focused on fixing some performance issues with
happstack-server, and refactoring the code so that user API and
internals are more clearly separated and better documented.

happstack 0.7 is all about happstack-state. A key aspect will be
nailing down some solid performance benchmarks instead of vague hand
waving :)

The numbers you give are certainly within the scope of what we would
like 0.7 to be able to handle. Also, I should note that
happstack-state and happstack-ixset are independent from each other.
You can easily use something other than IxSet to store your points and
still use happstack-state.

- jeremy

On Fri, Oct 1, 2010 at 1:53 PM, Thomas M. DuBuisson
thomas.dubuis...@gmail.com wrote:
 That is pretty close to how it would look using happstack-state. Here
 is a complete, runnable example which defines the types, a query,
 creates/initializes the database, performs the query, and prints the
 results.
 [snip]

 How is data stored in Happstack.State?  I see the Component instance
 uses fromList from happstack-ixset but can't find any information on
 the algorithm used or its efficiency (computationally or wrt space).

 If making this more concrete helps then here is a possible use:

 == GPS Points ==
 I have a GPS logger that logs every 10 seconds when I jog.  Jogging for
 an hour a day for the past 180 days has resulted in 64k points.
 Pretending I hosted a site for joggers (and all points were in the same
 DB) I could easily result in a billion points ( 20K users).  Would
 happstack-ixset code in the form points @ (Lon -120) @ (Lon -125) @
 (Lat 45) @ (Lat 50) perform reasonably?

 Cheers,
 Thomas


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


Re: [Haskell-cafe] Lambda-case / lambda-if

2010-10-02 Thread Christopher Done
On 2 October 2010 20:23, Max Bolingbroke batterseapo...@hotmail.com wrote:
 Do you like this feature and think it would be worth incorporating
 this into GHC? Or is it too specialised to be of use? If there is
 enough support, I'll create a ticket and see what GHC HQ make of it.

Nice work! I like it and have wanted it for a while, and I know many
in the #haskell IRC channel would like it. The case is especially
useful. Maybe the if is only useful sometimes.

A benefit for lambda-case that I'll throw in the mix is:

main = do
  args - getArgs
  case args of
[path] - do exists - doesFileExist filepath
 if exists
then readFile filepath = putStrLn
else error file does not exist
_  - error usage: foo filename

becomes:

main = do
  getArgs = case of
[path] - doesFileExist filepath
  = if then readFile filepath = putStrLn
 else error file does not exist
_  - error usage: foo filename

There's nothing more annoying than having to introduce intermediate
bindings when you're going to immediate pattern match against it
immediately and never use it again. It's both annoying to have to
think of a variable name that makes sense and is not in scope or will
be in scope, and annoying to type it out, and it's just ugly. This is
*not* a special-case, it happens all the time and it's one of the few
things in the syntax I wish could be updated.

I vote yes, yes, and double yes!
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Lambda-case / lambda-if

2010-10-02 Thread Christopher Done
I just had a look at hpaste.org, and, amusingly, the first paste has this:

  down - openLazyURI http://list.iblocklist.com/?list=bt_level1;
  case down of
Left  _  - error Could not download file
Right bs - do input - bs
 ...

I can collect a huge list of instances of this annoying pattern from
Hackage and Google Code Search if it will encourage GHC HQ to make it
an extension.
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Lambda-case / lambda-if

2010-10-02 Thread Ozgur Akgun
On 2 October 2010 19:33, Henning Thielemann
lemm...@henning-thielemann.dewrote:


 On Sat, 2 Oct 2010, Max Bolingbroke wrote:

 ... lambda-case/lambda-if ...


 Nice! Concerning if-then-else I would more like to see an according
 function to go to Data.Bool, then we won't need more syntactic sugar like
 if-then-else. However the lambda-case would be useful for me.


And I was just reading this entry in the wiki:
http://www.haskell.org/haskellwiki/If-then-else

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


Re: [Haskell-cafe] Lambda-case / lambda-if

2010-10-02 Thread Jan Christiansen


On 02.10.2010, at 20:35, Henning Thielemann wrote:



On Sat, 2 Oct 2010, Colin Paul Adams wrote:



  Prelude (if then Haskell else Cafe) False
  Max Cafe

My reaction is to ask:

Can you write this as:

(if then else) False  Haskell  Cafe

?


Sure:

ifThenElse :: Bool - a - a - a
ifThenElse True  x _ = x
ifThenElse False _ y = y

Prelude ifThenElse False Haskell Cafe



You can use a similar approach for case expressions ; )


import Prelude hiding ( catch )
import System.IO.Unsafe ( unsafePerformIO )
import Control.Exception ( catch, evaluate, PatternMatchFail )


caseOf :: a - [a - b] - b
caseOf x = unsafePerformIO . firstMatch . map ($x)

firstMatch :: [a] - IO a
firstMatch (x:xs) = catch (evaluate x) (handlePatternFail (firstMatch  
xs))


handlePatternFail :: a - PatternMatchFail - a
handlePatternFail x _ = x


test = (flip caseOf [\1 - One, \_ - Not-one]) 1


Well, to tell the truth this does not work correctly as the following  
example shows.


test2 = (flip caseOf [\1 - ((\2 - One) 3), \_ - Not-one]) 1
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Lambda-case / lambda-if

2010-10-02 Thread Felipe Lessa
On Sat, Oct 2, 2010 at 4:13 PM, Christopher Done
chrisd...@googlemail.com wrote:
 There's nothing more annoying than having to introduce intermediate
 bindings when you're going to immediate pattern match against it
 immediately and never use it again. It's both annoying to have to
 think of a variable name that makes sense and is not in scope or will
 be in scope, and annoying to type it out, and it's just ugly. This is
 *not* a special-case, it happens all the time and it's one of the few
 things in the syntax I wish could be updated.

 I vote yes, yes, and double yes!

I wholly agree with Christopher and for the same reason, +1.

Thanks,

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


Re: happstack-ixset internals/performance (was Re: [Haskell-cafe] Inverse of HaskellDB)

2010-10-02 Thread Thomas M. DuBuisson
Thanks Jeremy, I just wrote up my own little analysis (below) while you
were responding.  I'll look for the kd-tree work; if I see discussion
(and am stupid enough to heap more work onto my plate) then I might get
involved.

Oops, didn't send...

Cheers,
Thomas

-

So another glance tells me there is a list of maps (one element for each
index method) and it uses Data.Map under the hood.  So I have O(m lg n)
where m is the number of index methods and n is the number of elements.

Space wise, I think Data.Map takes up 6 words per Bin constructor (1 for
the constructor, 1 for the 'Size' and one for the pointer indirection
for each additional field), so the space is 6 * n * m * w where w is
the word size.  This means indexing by 5 methods for 1M entries takes
about 256MB, assuming 28B per entry that's 28MB of data + 256 indexing ~
282MB needed.

Indexing my imaginary 1B points by user,date,lat,lon is 6 * 2^30 * 4 * 8
- or about 192 GB of indexing + 28GB of data for 220GB total.  Obviously
I shouldn't be talking about keeping a live data set of 28GB in memory
let alone indexing it all, but I was just curious about the ratio (220MB
for 1M points, which is just one heavy user).



On Sat, 2010-10-02 at 14:09 -0500, Jeremy Shaw wrote:
 In the current version of IxSet, the performance of querying on just
 the Lon would be essentially the same as if you just had a Data.Map
 Lon Point. But the queries on the second index are current not so
 great. There is work in progress to rewrite the internals of IxSet to
 be based on a kd-tree, in which case your query should be pretty
 efficient.
 
 So, that answer is pretty vague :) I am in the process of wrapping up
 happstack 0.6 which has focused on fixing some performance issues with
 happstack-server, and refactoring the code so that user API and
 internals are more clearly separated and better documented.
 
 happstack 0.7 is all about happstack-state. A key aspect will be
 nailing down some solid performance benchmarks instead of vague hand
 waving :)
 
 The numbers you give are certainly within the scope of what we would
 like 0.7 to be able to handle. Also, I should note that
 happstack-state and happstack-ixset are independent from each other.
 You can easily use something other than IxSet to store your points and
 still use happstack-state.
 
 - jeremy
 
 On Fri, Oct 1, 2010 at 1:53 PM, Thomas M. DuBuisson
 thomas.dubuis...@gmail.com wrote:
  That is pretty close to how it would look using happstack-state. Here
  is a complete, runnable example which defines the types, a query,
  creates/initializes the database, performs the query, and prints the
  results.
  [snip]
 
  How is data stored in Happstack.State?  I see the Component instance
  uses fromList from happstack-ixset but can't find any information on
  the algorithm used or its efficiency (computationally or wrt space).
 
  If making this more concrete helps then here is a possible use:
 
  == GPS Points ==
  I have a GPS logger that logs every 10 seconds when I jog.  Jogging for
  an hour a day for the past 180 days has resulted in 64k points.
  Pretending I hosted a site for joggers (and all points were in the same
  DB) I could easily result in a billion points ( 20K users).  Would
  happstack-ixset code in the form points @ (Lon -120) @ (Lon -125) @
  (Lat 45) @ (Lat 50) perform reasonably?
 
  Cheers,
  Thomas
 
 


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


[Haskell-cafe] Re: Haskell web development entries on the Wiki

2010-10-02 Thread Michael Snoyman
I understand the advantages to splitting into multiple pages, but on
the other hand it *does* make it more difficult to locate information.
My guess is a good search function on the wiki will make that point
moot. Overall, looks like you've done a great job, thanks! A few minor
comments:

* Should we rename HAppS to Happstack everywhere?
* Does pass.net still exist anywhere? Same for parallel web.
* Should older, unmaintained stuff (Wash, for example) be removed
entirely, placed on its own page or be obviously marked as
unmaintained?

Michael

On Fri, Oct 1, 2010 at 10:50 PM, Christopher Done
chrisd...@googlemail.com wrote:
 Decided to move this to a separate thread. I went ahead and refactored
 the wiki entries:

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

 Now we have the following Web/ sections:

 Servers
 Frameworks
 Interfaces to frameworks
 Databases and Persistence
 Libraries
 Testing and Verification
 Content Management

 and

 Forums and Discussion
 Literature (research, talks and blogs)
 Existing Haskell web applications
 Ongoing projects and ideas

 And Web/Libraries has the following sections:

 URLs and Routing
 Templating
 Sessions and Authentication
 CGI
 Forms
 JavaScript and AJAX
 CSS

 I will add all these pages to the Web category, but not yet, I want to
 get rid of this page:
 http://www.haskell.org/haskellwiki/?title=Applications_and_libraries/Web_programming

 I've nearly finished moving all of it to organised sections in this
 new hierarchy. The advantage of doing this is that I have to manually
 check each thing listed and I discover that quite a few are dead links
 and no longer maintained.

 Ideally this page http://www.haskell.org/haskellwiki/Web/Frameworks
 would have a list of all actually active web projects, and those would
 be listed at the top, or perhaps there should be another page
 Web/Frameworks/Active or whatnot.

 Anyone care to help take this page apart Applications and
 libraries/Web programming and move it to reasonable pages?

 Thoughts?

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


Re: [Haskell-cafe] Re: Haskell web development entries on the Wiki

2010-10-02 Thread Gwern Branwen
On Sat, Oct 2, 2010 at 4:13 PM, Michael Snoyman mich...@snoyman.com wrote:
 I understand the advantages to splitting into multiple pages, but on
 the other hand it *does* make it more difficult to locate information.
 My guess is a good search function on the wiki will make that point
 moot. Overall, looks like you've done a great job, thanks! A few minor
 comments:

 * Should we rename HAppS to Happstack everywhere?

I think we should. No one is using the old HAppS code, so references
are just misleading.

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


[Haskell-cafe] Re: Haskell web development entries on the Wiki

2010-10-02 Thread Christopher Done
On 2 October 2010 22:13, Michael Snoyman mich...@snoyman.com wrote:
 I understand the advantages to splitting into multiple pages, but on
 the other hand it *does* make it more difficult to locate information.

It does? What's an example? I'll fix it.

 My guess is a good search function on the wiki will make that point
 moot.

Probably!

 * Does pass.net still exist anywhere? Same for parallel web.

I couldn't find any references to pass.net.

 * Should older, unmaintained stuff (Wash, for example) be removed
 entirely, placed on its own page or be obviously marked as
 unmaintained?

Yes, I think so. There are a lot of frameworks on that page that are
just cluttering it up, most of them are unmaintained or don't really
have a big user-base. Perhaps we should split it to Active /
Recommended  and  Inactive / Unevaluated or something like that. If I
was looking for web frameworks I'd want to know which ones were
actively maintained and then *maybe* what other ones there are. It
could well be two pages. Frameworks/Active or Recommended_Frameworks
and then the other. I'm not sure. Thoughts, chaps?

On 2 October 2010 22:24, Gwern Branwen gwe...@gmail.com wrote:
 * Should we rename HAppS to Happstack everywhere?

 I think we should. No one is using the old HAppS code, so references
 are just misleading.

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


Re: [Haskell-cafe] Lambda-case / lambda-if

2010-10-02 Thread Brandon S Allbery KF8NH
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 10/2/10 15:27 , Jan Christiansen wrote:
 You can use a similar approach for case expressions ; )

There are several better (that is, not using unsafePerformIO) versions at
http://haskell.org/haskellwiki/Case .

- -- 
brandon s. allbery [linux,solaris,freebsd,perl]  allb...@kf8nh.com
system administrator  [openafs,heimdal,too many hats]  allb...@ece.cmu.edu
electrical and computer engineering, carnegie mellon university  KF8NH
-BEGIN PGP SIGNATURE-
Version: GnuPG v2.0.10 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkynmNsACgkQIn7hlCsL25XbOgCfdjFrXdR3PWJvPUif7VVfZZak
lOcAoMpp6l1+XOxU6vwCT+sgLI94l3Kx
=+gFp
-END PGP SIGNATURE-
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] CCC MyType

2010-10-02 Thread Brent Yorgey
On Fri, Oct 01, 2010 at 01:18:29PM +0200, Lafras Uys wrote:
 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1
 
 I can now find explicit bindings for apply and curry, however not for
 uncurry. The type signature for uncurry introduces a new type
 constructor (=),
 
  uncurry :: = a (Exp = b c) - = (Product = a b) c
 
 I'm not sure what the meaning of (=) is? If someone could provide some
 pointers, I would be much obliged.

Where did you get these type signatures from?  It seems most likely to
me that the = is just a typo.

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


[Haskell-cafe] Re: Non-existing types in existential quantification?

2010-10-02 Thread Ben Franksen
Christopher Done wrote:
 On 1 October 2010 15:27, Henning Thielemann
 lemm...@henning-thielemann.de wrote:

 Given the following code, that is accepted by GHC:

 data Exist = forall a. Exist a

 exist :: Exist
 exist = Exist undefined

 What type has the 'undefined' ?
 
 I think its type is `a'.

 So far I assumed that at runtime all objects have a concrete type. This
 seems not to be true.

Haskell has a static type system. This means that the type is a property of
expressions in the source language, not (necessarily) something which
exists at runtime. Furthermore, polymorphic types (i.e. those which contain
type variables) such as

  Nothing :: forall a. Maybe a

are no less concrete than monomorphic ones (i.e. those which do not contain
type variables). It often happens that the 'same' expression has different
types in different contexts, and that some of them are monomorphic, even
though others are polymorphic. In this case the monomorphic type must be a
substitution instance of the polymorphic one (i.e. type variables have been
instatiated with (monomorphic) types). But I know of no rule that says
that /all/ type variables have to be instantiated eventually.  

 Consider the following program:
 
 main = putStrLn $ show $ length [undefined :: a,undefined :: b]
 
 A concrete type of the element in list doesn't need to be determined
 at runtime, or any time. a unifies with b, and that unifies with x in
 length :: [x] - Int.

A simpler example is

  main = print Nothing

Cheers
Ben

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


Re: happstack-ixset internals/performance (was Re: [Haskell-cafe] Inverse of HaskellDB)

2010-10-02 Thread Peter Robinson
Hi, Thomas.

 Thanks Jeremy, I just wrote up my own little analysis (below) while you
 were responding.  I'll look for the kd-tree work; if I see discussion
 (and am stupid enough to heap more work onto my plate) then I might get
 involved.

You can find the repository for the dynamic kd-tree implementation here [1].
I'm currently rewriting large parts of the core algorithms (balancing and multi
key traversal) and the implementation is far from being complete/usable.  Once
I'm done with these changes it's time for some serious benchmarking.  The
kd-tree implementation does seem to scale, as the last working version
outperformed Data.Map w.r.t. space and time when considering large data sets
(~100 elements). For single-key queries on small data sets, however, IxSet
is currently still faster while memory consumption is about the same.

I think the main advantage of using a kd-tree vs multiple Data.Maps, is that a
query involving multiple keys can still happen in O(log n) time, as the tree
needs to be traversed only once. Also, when an element is modified, most of the
m Data.Maps need to be rebuilt (i.e. O(m*n*log n)) because the indexing
information might be out of date. (This might have been optimized in recent
versions of happstack-ixset.) For the kd-tree we can get away with rebalancing a
subtree of some size k which takes O(k*log k) time.

  Peter

[1] http://darcs.monoid.at/kdtree/

 -

 So another glance tells me there is a list of maps (one element for each
 index method) and it uses Data.Map under the hood.  So I have O(m lg n)
 where m is the number of index methods and n is the number of elements.

 Space wise, I think Data.Map takes up 6 words per Bin constructor (1 for
 the constructor, 1 for the 'Size' and one for the pointer indirection
 for each additional field), so the space is 6 * n * m * w where w is
 the word size.  This means indexing by 5 methods for 1M entries takes
 about 256MB, assuming 28B per entry that's 28MB of data + 256 indexing ~
 282MB needed.

 Indexing my imaginary 1B points by user,date,lat,lon is 6 * 2^30 * 4 * 8
 - or about 192 GB of indexing + 28GB of data for 220GB total.  Obviously
 I shouldn't be talking about keeping a live data set of 28GB in memory
 let alone indexing it all, but I was just curious about the ratio (220MB
 for 1M points, which is just one heavy user).



 On Sat, 2010-10-02 at 14:09 -0500, Jeremy Shaw wrote:
 In the current version of IxSet, the performance of querying on just
 the Lon would be essentially the same as if you just had a Data.Map
 Lon Point. But the queries on the second index are current not so
 great. There is work in progress to rewrite the internals of IxSet to
 be based on a kd-tree, in which case your query should be pretty
 efficient.

 So, that answer is pretty vague :) I am in the process of wrapping up
 happstack 0.6 which has focused on fixing some performance issues with
 happstack-server, and refactoring the code so that user API and
 internals are more clearly separated and better documented.

 happstack 0.7 is all about happstack-state. A key aspect will be
 nailing down some solid performance benchmarks instead of vague hand
 waving :)

 The numbers you give are certainly within the scope of what we would
 like 0.7 to be able to handle. Also, I should note that
 happstack-state and happstack-ixset are independent from each other.
 You can easily use something other than IxSet to store your points and
 still use happstack-state.

 - jeremy

 On Fri, Oct 1, 2010 at 1:53 PM, Thomas M. DuBuisson
 thomas.dubuis...@gmail.com wrote:
  That is pretty close to how it would look using happstack-state. Here
  is a complete, runnable example which defines the types, a query,
  creates/initializes the database, performs the query, and prints the
  results.
  [snip]
 
  How is data stored in Happstack.State?  I see the Component instance
  uses fromList from happstack-ixset but can't find any information on
  the algorithm used or its efficiency (computationally or wrt space).
 
  If making this more concrete helps then here is a possible use:
 
  == GPS Points ==
  I have a GPS logger that logs every 10 seconds when I jog.  Jogging for
  an hour a day for the past 180 days has resulted in 64k points.
  Pretending I hosted a site for joggers (and all points were in the same
  DB) I could easily result in a billion points ( 20K users).  Would
  happstack-ixset code in the form points @ (Lon -120) @ (Lon -125) @
  (Lat 45) @ (Lat 50) perform reasonably?
 
  Cheers,
  Thomas
 
 


 ___
 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] Lambda-case / lambda-if

2010-10-02 Thread wren ng thornton

On 10/2/10 3:13 PM, Christopher Done wrote:

There's nothing more annoying than having to introduce intermediate
bindings when you're going to immediate pattern match against it
immediately and never use it again. It's both annoying to have to
think of a variable name that makes sense and is not in scope or will
be in scope, and annoying to type it out, and it's just ugly. This is
*not* a special-case, it happens all the time and it's one of the few
things in the syntax I wish could be updated.


+1.

In Mark Jones' new language, Habit, they have monadic versions of case 
and if-then-else for precisely this reason.


I'm not sure if the (case of {...}) syntax is the best one to use for 
this feature, but I'd love to get rid of those intermediate names for 
monadic case expressions.


--
Live well,
~wren
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: happstack-ixset internals/performance (was Re: [Haskell-cafe] Inverse of HaskellDB)

2010-10-02 Thread Jeremy Shaw
Hello,

Check out these threads:

http://groups.google.com/group/happs/browse_thread/thread/23d92e45c99f88b1
http://groups.google.com/group/happs/browse_thread/thread/0b0d0a9158c3ad73

There is nothing inherently wrong with keeping 28GB of real data in
memory.  It depends largely on what you are trying to optimize for..

For personal hobby projects, the cost of hosting the project seems to
be the biggest expense that people are concerned worth. (Which is
quite reasonable). As a result people are willing to increase
development time, and sacrifice performance in order lower hosting
costs. (Also reasonable).

For commercial projects, the costs look different. For example, if
buying a server with 1TB of RAM (around $80,000 these days) means they
can hire one less developer (at $150,000/year when you look at total
cost of salary, benefits, etc), then that is a savings of $70,000.
Additionally, in RAM storage provides much more predictable
performance. If you have ever attempted to use a site like reddit
after its memcached servers have been reset, it is clear how bad the
penalties for hitting disk are. RAM is significantly faster and than
disk and has no seek time. RAM can achieve 100-1000x less latency and
higher throughput.

Facebook reportedly keeps as much as 80-90% of their working dataset
in memcached. In 2008 they had 28TB of memcached servers. No idea what
they are up to now
(http://www.facebook.com/note.php?note_id=39391378919).

Of course, there are datasets which are simply too big to be stored in
RAM. For example, google's search index. I am not that familiar with
their approach, but I believe they go the opposite extreme. They
likely assume that every query is going to hit the disk, and optimize
the system so that it can provide acceptable response even if nothing
is cached ? (I am totally guessing here).

The focus of the new IxSet internals is to help bring the indexing
overhead ratio down (and increase speed at the same time).

There are also some ideas, but not code, for how to build an
IxSet-like structure which stores the keys in RAM, but can store the
values of disk. That would, hopefully, give you the ease of use of
IxSet, but with lower memory requirements if your keys are
significantly smaller than the total value payload. The trade off
being that you get back into the ugly work of disk seeks :)

There was also some experimental work done where the values were
stored in RAM, but in their serialized byte format, under the
assumption that the serialized format is a lot more compact than the
normal representation. The trade off is that the values must be
deserialized everytime they are used, which requires more CPU. A more
complex version could be imagined, where the deserialized version is
cached for some period of time. Whether that is actually beneficial
can only be determined empirically I think...

So, clearly happstack-state is not the optimal choice for all haskell
web applications. And that is why it is a completely independent from
happstack-server. We do want to allow people to pick the best choice
for their application. Of course, if we want to provide off-the-shelf
components like a user account system -- then eventually we have to
nail down some specifics, such as the persistence layer. But those
choices would only apply to code that wants to use those optional
components.

At the same time, happstack-state is a very interesting and
challenging library to work on. The recent rise in popularity of
things like redis seems to validate happstack-state somewhat.

- jeremy


On Sat, Oct 2, 2010 at 3:09 PM, Thomas M. DuBuisson
thomas.dubuis...@gmail.com wrote:
 Thanks Jeremy, I just wrote up my own little analysis (below) while you
 were responding.  I'll look for the kd-tree work; if I see discussion
 (and am stupid enough to heap more work onto my plate) then I might get
 involved.

 Oops, didn't send...

 Cheers,
 Thomas

 -

 So another glance tells me there is a list of maps (one element for each
 index method) and it uses Data.Map under the hood.  So I have O(m lg n)
 where m is the number of index methods and n is the number of elements.

 Space wise, I think Data.Map takes up 6 words per Bin constructor (1 for
 the constructor, 1 for the 'Size' and one for the pointer indirection
 for each additional field), so the space is 6 * n * m * w where w is
 the word size.  This means indexing by 5 methods for 1M entries takes
 about 256MB, assuming 28B per entry that's 28MB of data + 256 indexing ~
 282MB needed.

 Indexing my imaginary 1B points by user,date,lat,lon is 6 * 2^30 * 4 * 8
 - or about 192 GB of indexing + 28GB of data for 220GB total.  Obviously
 I shouldn't be talking about keeping a live data set of 28GB in memory
 let alone indexing it all, but I was just curious about the ratio (220MB
 for 1M points, which is just one heavy user).



 On Sat, 2010-10-02 at 14:09 -0500, Jeremy Shaw wrote:
 In the current version of IxSet, the performance of querying on just
 the 

[Haskell-cafe] Re: Lambda-case / lambda-if

2010-10-02 Thread Max Bolingbroke
Thanks to everyone who replied - it looks like this feature is enough
in demand that GHC HQ may want to accept it. I've created a ticket at
http://hackage.haskell.org/trac/ghc/ticket/4359

On 2 October 2010 14:23, Max Bolingbroke batterseapo...@hotmail.com wrote:
 Hi Cafe,

 I implemented the proposed Haskell' feature lambda-case/lambda-if [1]
 during the Haskell Implementors Workshop yesterday for a bit of fun.
 The patches are online [2, 3].

 The feature is demonstrated in this GHCi session:

 $ inplace/bin/ghc-stage2 --interactive -XLambdaCase
 GHCi, version 7.1.20101002: http://www.haskell.org/ghc/  :? for help
 Loading package ghc-prim ... linking ... done.
 Loading package integer-gmp ... linking ... done.
 Loading package base ... linking ... done.
 Loading package ffi-1.0 ... linking ... done.
 Prelude (if then Haskell else Cafe) False
 Cafe
 Prelude (case of 1 - One; _ - Not-one) 1
 One
 Prelude :q

 Do you like this feature and think it would be worth incorporating
 this into GHC? Or is it too specialised to be of use? If there is
 enough support, I'll create a ticket and see what GHC HQ make of it.

 Max

 [1] http://hackage.haskell.org/trac/haskell-prime/ticket/41
 [2] http://www.omega-prime.co.uk/files/LambdaCase-Testsuite.patch
 [3] http://www.omega-prime.co.uk/files/LambdaCase-Compiler.patch

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


Re: [Haskell-cafe] Re: A parsec question

2010-10-02 Thread Antoine Latter
On Wed, Sep 29, 2010 at 1:01 PM, Daniel Fischer
daniel.is.fisc...@web.de wrote:
 On Wednesday 29 September 2010 19:10:22, Ben Franksen wrote:
 
  Note the last line mentions only '}'. I would rather like to see
 
    expecting } or digit
 
  since the parser could very well accept another digit here.

 parsec2 did that, I don't know whether that change is intentional or
 accidental.


I came up with a smaller example which shows a similar problem:

 bracket = char '{' * return ()
 test = bracket * (bracket | return ()) * char 'a'

For the input {b the error message should mention that we can take
either a '{' or an 'a', however it only mentions the 'a'.

However I know how to fix this one, and it doesn't fix the bug
evidenced by the above program.

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


Re: [Haskell-cafe] EDSL for Makefile

2010-10-02 Thread C K Kashyap

 Thanks Emil ... yeah, that works...I was wondering what I could do to
 not have to mention r1 explicitly.
 I'll check out Neil's pdf and video now - perhaps I'll find answers there.


I checked out the video - nice - but I think, understandably, since
its not open source yet, not much of implementations details were
mentioned.

So, I have this unanswered question nagging in my head. In the
example below, how can I let the makefile writer refer to the target
name and dependencies. Likr Emil mentioned, I could use target r1
but I want to avoid having to mention r1.

http://hpaste.org/40233/haskell_makefile_edsl

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


[Haskell-cafe] Re: Haskell web development entries on the Wiki

2010-10-02 Thread Michael Snoyman
On Sat, Oct 2, 2010 at 10:40 PM, Christopher Done
chrisd...@googlemail.com wrote:
 On 2 October 2010 22:13, Michael Snoyman mich...@snoyman.com wrote:
 I understand the advantages to splitting into multiple pages, but on
 the other hand it *does* make it more difficult to locate information.

 It does? What's an example? I'll fix it.

It was more of a general comment. When everything's on the same page,
I can do ctrl-f happ and find information about all the pieces of
happstack. As I said, I think a search function is a good replacement.

 My guess is a good search function on the wiki will make that point
 moot.

 Probably!

 * Does pass.net still exist anywhere? Same for parallel web.

 I couldn't find any references to pass.net.

http://www.haskell.org/haskellwiki/Web/Existing_software

 * Should older, unmaintained stuff (Wash, for example) be removed
 entirely, placed on its own page or be obviously marked as
 unmaintained?

 Yes, I think so. There are a lot of frameworks on that page that are
 just cluttering it up, most of them are unmaintained or don't really
 have a big user-base. Perhaps we should split it to Active /
 Recommended  and  Inactive / Unevaluated or something like that. If I
 was looking for web frameworks I'd want to know which ones were
 actively maintained and then *maybe* what other ones there are. It
 could well be two pages. Frameworks/Active or Recommended_Frameworks
 and then the other. I'm not sure. Thoughts, chaps?

I would recommend *not* qualifying the active/recommended stuff. Maybe
Frameworks and Frameworks/Inactive. I personally wouldn't want to
group new, unevaluated code with inactive: I think we should give the
new players the same publicity as the established products on the main
page, but perhaps with a little label explaining how new/untested it
is.

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