Re: [Haskell-cafe] Haskell not ready for Foo [was: Re: Hypothetical Haskell job in New York]

If you're looking for a project to take on, I would suggest starting with the following: A high-level, type-safe AMQP client written in 100% Haskell, which provides a clean way of handling hundreds of unique message types. Then it would be possible to hook it up to any AMQP broker (most likely RabbitMQ). There are logical steps beyond the above (an embedded Haskell broker), but the above project is far from trivial. And the main undertaking, I think, consists not in coding to the spec (for which there is some help; a JSON representation of the AMQP specification can be processed and used to emit language-specific code), but in finding a design that works well in Haskell. Regards, John On Jan 8, 2009, at 1:16 PM, Creighton Hogg wrote:
On Thu, Jan 8, 2009 at 2:02 PM, John A. De Goes
wrote: On Jan 8, 2009, at 12:56 PM, Tim Newsham wrote:
You replied to someone discussing using Haskell at a CDN to implement things like web servers by saying that Haskell wasn't suitable for the task.
That is incorrect. I replied to Achim's message asking for elaboration on Haskell's unsuitability. It was a convenient point to discuss Haskell's networking deficiencies.
Part of the problem I'm having with this discussion, though, is that it's still not clear to me what critical features are lacking. I know you've said Haskell doesn't have anything quite like the Erlang OTP library, but that doesn't really help me much. I've only looked a little at OTP & I don't think I understand what you get from its behaviors that you don't get from Control.Concurrent + mtl, i.e. various forms of state & error handling independent of the concurrency underneath.
Can you elucidate a bit more? I don't want the conversation to degenerate.

John A. De Goes said:
If you're looking for a project to take on, I would suggest starting with [AMQP]
See: http://www.reddit.com/r/haskell_proposals/comments/7ihpt/amqp_client/ This isn't a new proposal, not to imply you thought so. If you have a need for such a library please start working or start a team. Short of that, expressing your interest (or perhaps subsequent projects requiring AMQP) in our somewhat new "Proposed Projects" reddit community might draw attention to this cause. Tom

2009/1/9 John A. De Goes
If you're looking for a project to take on, I would suggest starting with the following:
A high-level, type-safe AMQP client written in 100% Haskell, which provides a clean way of handling hundreds of unique message types.
Then it would be possible to hook it up to any AMQP broker (most likely RabbitMQ). There are logical steps beyond the above (an embedded Haskell broker), but the above project is far from trivial. And the main undertaking, I think, consists not in coding to the spec (for which there is some help; a JSON representation of the AMQP specification can be processed and used to emit language-specific code), but in finding a design that works well in Haskell.

On Jan 9, 2009, at 9:01 AM, Creighton Hogg wrote:
2009/1/9 John A. De Goes
: If you're looking for a project to take on, I would suggest starting with the following:
A high-level, type-safe AMQP client written in 100% Haskell, which provides a clean way of handling hundreds of unique message types.
Then it would be possible to hook it up to any AMQP broker (most likely RabbitMQ). There are logical steps beyond the above (an embedded Haskell broker), but the above project is far from trivial. And the main undertaking, I think, consists not in coding to the spec (for which there is some help; a JSON representation of the AMQP specification can be processed and used to emit language-specific code), but in finding a design that works well in Haskell.
I apologize, but my question was geared more towards understanding what high-level OTP-like libraries Haskell is lacking, not full blown applications that haven't been written in Haskell. It sounded like you had some specific insight into this.
A Haskell AMQP client is not an application, but a library that Haskell applications would use (if it existed). The use of the word "client" refers to the client/server metaphor used in centralized message broker systems like AMQP. Regarding the OTP specifically, Haskell doesn't have anything like it. Haskell has bits and pieces, but they're not integrated in a single stack, and much functionality is missing. For example, there's no way to dynamically poke running Haskell code, to see what it's doing; no way to update code on the fly as a process is running; no scalable distributed database system; etc. Regards, John

john:
On Jan 9, 2009, at 9:01 AM, Creighton Hogg wrote:
2009/1/9 John A. De Goes
: If you're looking for a project to take on, I would suggest starting with the following:
A high-level, type-safe AMQP client written in 100% Haskell, which provides a clean way of handling hundreds of unique message types.
Then it would be possible to hook it up to any AMQP broker (most likely RabbitMQ). There are logical steps beyond the above (an embedded Haskell broker), but the above project is far from trivial. And the main undertaking, I think, consists not in coding to the spec (for which there is some help; a JSON representation of the AMQP specification can be processed and used to emit language-specific code), but in finding a design that works well in Haskell.
I apologize, but my question was geared more towards understanding what high-level OTP-like libraries Haskell is lacking, not full blown applications that haven't been written in Haskell. It sounded like you had some specific insight into this. A Haskell AMQP client is not an application, but a library that Haskell applications would use (if it existed). The use of the word "client" refers to the client/server metaphor used in centralized message broker systems like AMQP.
Regarding the OTP specifically, Haskell doesn't have anything like it. Haskell has bits and pieces, but they're not integrated in a single stack, and much functionality is missing. For example, there's no way to dynamically poke running Haskell code, to see what it's doing; no way to update code on the fly as a process is running; no scalable distributed database system; etc.
There are at least two ways to do dynamic code update, via compiled code, and via bytecode. -- Don
participants (4)
-
Creighton Hogg
-
Don Stewart
-
John A. De Goes
-
Thomas DuBuisson