[Haskell] (no subject)

2015-07-23 Thread lel416
Can u still purchase general admission tkts

Sent from my iPhone
___
Haskell mailing list
Haskell@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell


Re: [Haskell-cafe] Subject: ANNOUNCE: grid-3.0.1 (tile maps for board games or maths)

2013-02-19 Thread Amy de Buitléir
Twan van Laarhoven twanvl at gmail.com writes:

 After taking a peek at the documentation: have you considered removing
 the size function from Grid?
. . .
 It might also be useful to add a rectangular grid type where diagonally 
 adjacent cells are also neighbors.
. . .
 Another interesting idea is to have modifier types that change which 
 cells are neighbors, for example you could have

Those are all great suggestions, thank you. I'll look into incorporating
them into the next major release.


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


[Haskell-cafe] Subject: ANNOUNCE: grid-3.0.1 (tile maps for board games or maths)

2013-02-18 Thread Amy de Buitléir
I'm happy to announce a new major release of the grid package:

http://hackage.haskell.org/package/grid
https://github.com/mhwombat/grid/wiki (wiki)

WHAT'S NEW:

Functions for reporting the boundary and centre of bounded grid have been added,
along with some miscellaneous new utility functions. IMPORTANT: The order of
parameters for some functions has changed to make it easier to use them with map
and fold operations.

ABOUT GRID:
Grid provides tools for working with regular arrangements of tiles, such as
might be used in a board game or self-organising map (SOM). Grid currently
supports triangular, square, and hexagonal tiles, with various 2D and toroidal
layouts. If you need a tile shape or layout that isn't currently provided,
please let me know. See Math.Geometry.Grid for an example of how to use the
package. Suggestions for improvement are welcome.


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


Re: [Haskell-cafe] Subject: ANNOUNCE: grid-3.0.1 (tile maps for board games or maths)

2013-02-18 Thread Twan van Laarhoven

On 18/02/13 13:41, Amy de Buitléir wrote:

I'm happy to announce a new major release of the grid package:

 http://hackage.haskell.org/package/grid
 https://github.com/mhwombat/grid/wiki (wiki)



After taking a peek at the documentation: have you considered removing the size 
function from Grid? It is the only function that actually uses the type 
parameter 's'. If you really need it, I would suggest putting it in a separate 
class,


class HasSize a s | a - s where
size :: a - s


It might also be useful to add a rectangular grid type where diagonally adjacent 
cells are also neighbors.


Another interesting idea is to have modifier types that change which cells are 
neighbors, for example you could have

class Colinear g x | g x where
-- | Are three points separated by moves in the same direction?
isColinear :: g - x - x - x - Bool

-- neighbors are separated by diagonal moves
newtype Diagonal g = Diagonal g
instance (Grid g, Colinear g x) = Grid (Diagonal g) x where
neighbors g x = [z | y - neigbhors x, z - neigbhors y
   , not (isColinear x y z)]

newtype Rook g = ...
newtype Knight g = ...
-- etc.


Twan

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


[Haskell] (no subject)

2012-09-16 Thread Clint Moore


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


[Haskell] (no subject)

2012-09-16 Thread Clint Moore


smime.p7s
Description: S/MIME cryptographic signature
___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


Re: [Haskell] (no subject)

2012-05-31 Thread Alexander Kantardjiev

wow look into this http://www.stenews.net/biz/?read=3610300


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


[Haskell] (no subject)

2012-04-02 Thread Mark Snyder
a href=http://isukeworld.com/test/cat13/02efpk.html; 
http://isukeworld.com/test/cat13/02efpk.html/a___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


[Haskell] (no subject)

2012-02-21 Thread Dan Burton
Haskellers,

I'm pleased to announce the first public release of NetSpec, a little
Network library to simplify networking tasks that involve a fixed number of
connections, using Erlang-esque send and receive primitives.

Check out the docs: http://hackage.haskell.org/package/netspec
And the repo on github (with examples): https://github.com/DanBurton/netspec

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


Re: [Haskell-cafe] Subject: A universal data store interface

2012-02-14 Thread Deian Stefan
On Mon, Feb 13, 2012 at 11:52, Greg Weber g...@gregweber.info wrote:
 That being said, I would like to have a Template Haskell interface
 instead of just a QQ interface. The reason why we haven't bothered
 with doing that ourselves is because the record name-spacing issue
 makes the current QQ interface much more convenient. I am actively
 working to solve the namespace issue. This all brings up a great point
 though: as part of the GSoC we should create a Template Haskell
 interface (similar to acid-state as you mention). Given the structure
 of things that Michael has already pointed out, and that we are
 already using Template Haskell with the DSL, this should only be a few
 day's work.

I'm joining this thread slightly late, but thought I point to a
similar TH approach:

http://hackage.haskell.org/package/structured-mongoDB

The implementation is very much MongoDB-specific, but we're working on
targeting different backends (package is on github, so we welcome other
hackers).  Of course, some of the issues that have been
brought up (e.g., no support for projection) still exist in
structured-mongoDB, but our goals have been more relaxed:
1) provide a type-safe interface to MongoDB, 2) to avoid QQ DSL
approach if possible, and 3) support a HaskellDB-like query interface.

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


Re: [Haskell-cafe] Subject: A universal data store interface

2012-02-14 Thread Greg Weber
Hi Deian,

Thanks for bringing this to our attention - this is a neat project! It
actually looks *exactly* like persistent - I can't actually discern a
meaningful difference, although likely your internals are slightly
simpler if you only support MongoDB. If your goals are to support
multiple backends then it seems your goals are *exactly* the same as
Persistent. Lets collaborate on this off of the mail list.

The url listed on hackage for the git repo points to Stanford, not github.

Greg Weber


On Tue, Feb 14, 2012 at 11:17 AM, Deian Stefan haskell-c...@deian.net wrote:
 On Mon, Feb 13, 2012 at 11:52, Greg Weber g...@gregweber.info wrote:
 That being said, I would like to have a Template Haskell interface
 instead of just a QQ interface. The reason why we haven't bothered
 with doing that ourselves is because the record name-spacing issue
 makes the current QQ interface much more convenient. I am actively
 working to solve the namespace issue. This all brings up a great point
 though: as part of the GSoC we should create a Template Haskell
 interface (similar to acid-state as you mention). Given the structure
 of things that Michael has already pointed out, and that we are
 already using Template Haskell with the DSL, this should only be a few
 day's work.

 I'm joining this thread slightly late, but thought I point to a
 similar TH approach:

 http://hackage.haskell.org/package/structured-mongoDB

 The implementation is very much MongoDB-specific, but we're working on
 targeting different backends (package is on github, so we welcome other
 hackers).  Of course, some of the issues that have been
 brought up (e.g., no support for projection) still exist in
 structured-mongoDB, but our goals have been more relaxed:
 1) provide a type-safe interface to MongoDB, 2) to avoid QQ DSL
 approach if possible, and 3) support a HaskellDB-like query interface.

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


Re: [Haskell-cafe] Subject: A universal data store interface

2012-02-14 Thread Deian Stefan
Hi Greg,

 Thanks for bringing this to our attention - this is a neat project! It
 actually looks *exactly* like persistent - I can't actually discern a
 meaningful difference, although likely your internals are slightly
 simpler if you only support MongoDB. If your goals are to support
 multiple backends then it seems your goals are *exactly* the same as
 Persistent. Lets collaborate on this off of the mail list.

Great, I think collaborating on this will be useful! (Posting this on
cafe to reflect the github url.)

 The url listed on hackage for the git repo points to Stanford, not github.

Here is the github mirror: https://github.com/deian/structued-mongoDB

Thanks,
Deian

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


[Haskell-cafe] Subject: A universal data store interface

2012-02-13 Thread Greg Weber
Hi Sergiu,

Thanks you for your interest in that proposal. I rushed it off a year
ago. Since then we have made a lot of improvements to Persistent and
the library forms a basic building block for most Yesod users and
other Haskellers. Persistent offers a level of type-safety and
convenience not available elsewhere (except perhaps for libraries like
acid-state that are limited to in-memory storage). That being said,
there are still a lot of improvements that could be made. With the
effort of a GSoC volunteer we could probably get it to the point of
being the go-to data storage library for Haskellers, at least those
planning on using the subset of backends (likely SQL) with great
support. This proposal is vague and we would need to work with you to
narrow things down a bit.

I am biased, but I believe the Yesod project is one of the most
compelling in the Haskell ecosystem. There are a lot of different ways
a GSoC project could help make things even better besides improving
the associated Persistent library, and we would really like to mentor
at least one GSoC student. I would open more tickets for this in the
system, but I am not sure how helpful it will be. It seems that we
need to reach out to more students like yourself, but I am not sure
how to do that unless I see messages like these first.

Greg Weber

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


Re: [Haskell-cafe] Subject: A universal data store interface

2012-02-13 Thread Tom Murphy
 With respect, I don't think that Persistent is a natural choice
as the go-to tool for Haskell users, simply because it requires
knowledge of a lot of Yesod-EDSL syntax.
 The set of users with persistent data needs seems a very
different set than that of those who are familiar with Yesod, and I
think the syntax is quite confusing without fuller understanding of
Yesod.

 The syntax of acid-state (not familiar with this one), and
swapper (https://github.com/roman-smrz/swapper/blob/master/test/) seem
to have a much more linear learning curve for an intermediate Haskell
user.

amindfv / Tom

On 2/13/12, Greg Weber g...@gregweber.info wrote:
 Hi Sergiu,

 Thanks you for your interest in that proposal. I rushed it off a year
 ago. Since then we have made a lot of improvements to Persistent and
 the library forms a basic building block for most Yesod users and
 other Haskellers. Persistent offers a level of type-safety and
 convenience not available elsewhere (except perhaps for libraries like
 acid-state that are limited to in-memory storage). That being said,
 there are still a lot of improvements that could be made. With the
 effort of a GSoC volunteer we could probably get it to the point of
 being the go-to data storage library for Haskellers, at least those
 planning on using the subset of backends (likely SQL) with great
 support. This proposal is vague and we would need to work with you to
 narrow things down a bit.

 I am biased, but I believe the Yesod project is one of the most
 compelling in the Haskell ecosystem. There are a lot of different ways
 a GSoC project could help make things even better besides improving
 the associated Persistent library, and we would really like to mentor
 at least one GSoC student. I would open more tickets for this in the
 system, but I am not sure how helpful it will be. It seems that we
 need to reach out to more students like yourself, but I am not sure
 how to do that unless I see messages like these first.

 Greg Weber

 ___
 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] Subject: A universal data store interface

2012-02-13 Thread Michael Snoyman
Actually, Persistent is fully usable without any special syntax, DSLs,
or Template Haskell. In fact, Persistent itself has no
template-haskell dependencies, specifically so that it can be built on
ghc-iphone. Additionally, the Persistent DSL syntax is completely
separate from any other Yesod DSL syntaxes that exist, so it's not
like you have to learn five new things to get the automatic code
generation.

On Mon, Feb 13, 2012 at 9:30 PM, Tom Murphy amin...@gmail.com wrote:
     With respect, I don't think that Persistent is a natural choice
 as the go-to tool for Haskell users, simply because it requires
 knowledge of a lot of Yesod-EDSL syntax.
     The set of users with persistent data needs seems a very
 different set than that of those who are familiar with Yesod, and I
 think the syntax is quite confusing without fuller understanding of
 Yesod.

     The syntax of acid-state (not familiar with this one), and
 swapper (https://github.com/roman-smrz/swapper/blob/master/test/) seem
 to have a much more linear learning curve for an intermediate Haskell
 user.

 amindfv / Tom

 On 2/13/12, Greg Weber g...@gregweber.info wrote:
 Hi Sergiu,

 Thanks you for your interest in that proposal. I rushed it off a year
 ago. Since then we have made a lot of improvements to Persistent and
 the library forms a basic building block for most Yesod users and
 other Haskellers. Persistent offers a level of type-safety and
 convenience not available elsewhere (except perhaps for libraries like
 acid-state that are limited to in-memory storage). That being said,
 there are still a lot of improvements that could be made. With the
 effort of a GSoC volunteer we could probably get it to the point of
 being the go-to data storage library for Haskellers, at least those
 planning on using the subset of backends (likely SQL) with great
 support. This proposal is vague and we would need to work with you to
 narrow things down a bit.

 I am biased, but I believe the Yesod project is one of the most
 compelling in the Haskell ecosystem. There are a lot of different ways
 a GSoC project could help make things even better besides improving
 the associated Persistent library, and we would really like to mentor
 at least one GSoC student. I would open more tickets for this in the
 system, but I am not sure how helpful it will be. It seems that we
 need to reach out to more students like yourself, but I am not sure
 how to do that unless I see messages like these first.

 Greg Weber

 ___
 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


Re: [Haskell-cafe] Subject: A universal data store interface

2012-02-13 Thread Tom Murphy
It seems that all tutorials and resources for Persistent use Template
Haskell along with several Yesod specifics.

But, I could be wrong, or new tutorials could be written.

Tom

On 2/13/12, Michael Snoyman mich...@snoyman.com wrote:
 Actually, Persistent is fully usable without any special syntax, DSLs,
 or Template Haskell. In fact, Persistent itself has no
 template-haskell dependencies, specifically so that it can be built on
 ghc-iphone. Additionally, the Persistent DSL syntax is completely
 separate from any other Yesod DSL syntaxes that exist, so it's not
 like you have to learn five new things to get the automatic code
 generation.

 On Mon, Feb 13, 2012 at 9:30 PM, Tom Murphy amin...@gmail.com wrote:
     With respect, I don't think that Persistent is a natural choice
 as the go-to tool for Haskell users, simply because it requires
 knowledge of a lot of Yesod-EDSL syntax.
     The set of users with persistent data needs seems a very
 different set than that of those who are familiar with Yesod, and I
 think the syntax is quite confusing without fuller understanding of
 Yesod.

     The syntax of acid-state (not familiar with this one), and
 swapper (https://github.com/roman-smrz/swapper/blob/master/test/) seem
 to have a much more linear learning curve for an intermediate Haskell
 user.

 amindfv / Tom

 On 2/13/12, Greg Weber g...@gregweber.info wrote:
 Hi Sergiu,

 Thanks you for your interest in that proposal. I rushed it off a year
 ago. Since then we have made a lot of improvements to Persistent and
 the library forms a basic building block for most Yesod users and
 other Haskellers. Persistent offers a level of type-safety and
 convenience not available elsewhere (except perhaps for libraries like
 acid-state that are limited to in-memory storage). That being said,
 there are still a lot of improvements that could be made. With the
 effort of a GSoC volunteer we could probably get it to the point of
 being the go-to data storage library for Haskellers, at least those
 planning on using the subset of backends (likely SQL) with great
 support. This proposal is vague and we would need to work with you to
 narrow things down a bit.

 I am biased, but I believe the Yesod project is one of the most
 compelling in the Haskell ecosystem. There are a lot of different ways
 a GSoC project could help make things even better besides improving
 the associated Persistent library, and we would really like to mentor
 at least one GSoC student. I would open more tickets for this in the
 system, but I am not sure how helpful it will be. It seems that we
 need to reach out to more students like yourself, but I am not sure
 how to do that unless I see messages like these first.

 Greg Weber

 ___
 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


Re: [Haskell-cafe] Subject: A universal data store interface

2012-02-13 Thread Greg Weber
Persistent is a database abstraction layer with no dependencies on
Yesod. Those that need a persistence layer have the same needs to
interface with the database in a type-safe way, regardless of whether
their program presents a web interface.

Have you tried using Persistent? We have never heard a report from a
user that the Persistent DSL schema syntax is confusing. These
complaints always seem to be from someone that hasn't actually tried
it but is adverse to quasi-quoting. The DSL is basically the exact
same as Haskell record syntax. I am not sure who the mythical users
are that can figure out Haskell but can't understand dead-simple
DSL's.

That being said, I would like to have a Template Haskell interface
instead of just a QQ interface. The reason why we haven't bothered
with doing that ourselves is because the record name-spacing issue
makes the current QQ interface much more convenient. I am actively
working to solve the namespace issue. This all brings up a great point
though: as part of the GSoC we should create a Template Haskell
interface (similar to acid-state as you mention). Given the structure
of things that Michael has already pointed out, and that we are
already using Template Haskell with the DSL, this should only be a few
day's work.


On Mon, Feb 13, 2012 at 11:40 AM, Tom Murphy amin...@gmail.com wrote:
 It seems that all tutorials and resources for Persistent use Template
 Haskell along with several Yesod specifics.

 But, I could be wrong, or new tutorials could be written.

 Tom

 On 2/13/12, Michael Snoyman mich...@snoyman.com wrote:
 Actually, Persistent is fully usable without any special syntax, DSLs,
 or Template Haskell. In fact, Persistent itself has no
 template-haskell dependencies, specifically so that it can be built on
 ghc-iphone. Additionally, the Persistent DSL syntax is completely
 separate from any other Yesod DSL syntaxes that exist, so it's not
 like you have to learn five new things to get the automatic code
 generation.

 On Mon, Feb 13, 2012 at 9:30 PM, Tom Murphy amin...@gmail.com wrote:
     With respect, I don't think that Persistent is a natural choice
 as the go-to tool for Haskell users, simply because it requires
 knowledge of a lot of Yesod-EDSL syntax.
     The set of users with persistent data needs seems a very
 different set than that of those who are familiar with Yesod, and I
 think the syntax is quite confusing without fuller understanding of
 Yesod.

     The syntax of acid-state (not familiar with this one), and
 swapper (https://github.com/roman-smrz/swapper/blob/master/test/) seem
 to have a much more linear learning curve for an intermediate Haskell
 user.

 amindfv / Tom

 On 2/13/12, Greg Weber g...@gregweber.info wrote:
 Hi Sergiu,

 Thanks you for your interest in that proposal. I rushed it off a year
 ago. Since then we have made a lot of improvements to Persistent and
 the library forms a basic building block for most Yesod users and
 other Haskellers. Persistent offers a level of type-safety and
 convenience not available elsewhere (except perhaps for libraries like
 acid-state that are limited to in-memory storage). That being said,
 there are still a lot of improvements that could be made. With the
 effort of a GSoC volunteer we could probably get it to the point of
 being the go-to data storage library for Haskellers, at least those
 planning on using the subset of backends (likely SQL) with great
 support. This proposal is vague and we would need to work with you to
 narrow things down a bit.

 I am biased, but I believe the Yesod project is one of the most
 compelling in the Haskell ecosystem. There are a lot of different ways
 a GSoC project could help make things even better besides improving
 the associated Persistent library, and we would really like to mentor
 at least one GSoC student. I would open more tickets for this in the
 system, but I am not sure how helpful it will be. It seems that we
 need to reach out to more students like yourself, but I am not sure
 how to do that unless I see messages like these first.

 Greg Weber

 ___
 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


Re: [Haskell-cafe] Subject: A universal data store interface

2012-02-13 Thread Paul R
I have quiet a lot of experience in the business of web services
strongly backed by data stores, in a company that allowed me to apply
a technologies such as RubyOnRails, DataMapper, PostgreSQL, Redis, Riak,
HappStack and Snap. Greg, with no offense intended, I will share with
the café a conclusion that we took year to draw, but that made out job
much better since : Abstraction over high level data stores is one of
the worst idea in software engineering.

The most proeminent example is probably PostgreSQL, which is an
incredibly strong product with high SQL power. But as soon as you access
it through the ActiveRecord or Persistent API, it gets turned into
a very limited store, with the SQL power of SQLITE or MongoDB.

So Sergiu, my POV is that universal data stores is at best a glue
targeting small projects, so that they can be hacked quickly. They offer
a set of features that, by design, is the greatest common divisor of the
backends, which unfortunately isn't that great. This is certainly nice
for a do-a-blog-in-5-minutes with MyFramework init video tutorial, but
probably not for industrial projects in the long run.

As a side note, the acid-state package that Greg kindly mentioned, takes
a very different approach to data storage, resulting in
a haskell-centric solution with an original features set.

Regarding your other option, the value behind the LLVM backend seems
huge for the whole Haskell community. It has the power to lighten GHC,
improve runtime performance, bring binaries to more platforms and much
more. In my opinion, that's quiet exciting :)


Greg Hi Sergiu,
Greg Thanks you for your interest in that proposal. I rushed it off a year
Greg ago. Since then we have made a lot of improvements to Persistent and
Greg the library forms a basic building block for most Yesod users and
Greg other Haskellers. Persistent offers a level of type-safety and
Greg convenience not available elsewhere (except perhaps for libraries like
Greg acid-state that are limited to in-memory storage). That being said,
Greg there are still a lot of improvements that could be made. With the
Greg effort of a GSoC volunteer we could probably get it to the point of
Greg being the go-to data storage library for Haskellers, at least those
Greg planning on using the subset of backends (likely SQL) with great
Greg support. This proposal is vague and we would need to work with you to
Greg narrow things down a bit.

Greg I am biased, but I believe the Yesod project is one of the most
Greg compelling in the Haskell ecosystem. There are a lot of different ways
Greg a GSoC project could help make things even better besides improving
Greg the associated Persistent library, and we would really like to mentor
Greg at least one GSoC student. I would open more tickets for this in the
Greg system, but I am not sure how helpful it will be. It seems that we
Greg need to reach out to more students like yourself, but I am not sure
Greg how to do that unless I see messages like these first.

Greg Greg Weber

-- 
  Paul

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


Re: [Haskell-cafe] Subject: A universal data store interface

2012-02-13 Thread Sergiu Ivanov
On Mon, Feb 13, 2012 at 9:01 PM, Greg Weber g...@gregweber.info wrote:

 Thanks you for your interest in that proposal. I rushed it off a year
 ago. Since then we have made a lot of improvements to Persistent and
 the library forms a basic building block for most Yesod users and
 other Haskellers. Persistent offers a level of type-safety and
 convenience not available elsewhere (except perhaps for libraries like
 acid-state that are limited to in-memory storage).

I see; this sounds great.  I'm not familiar with Persistent, but I
surely understand that type safety in persistence is very helpful, if
not crucial sometimes.  Also, my experience with Haskell makes me
expect that Persistent allows addressing persistence with concise,
safe code which just cannot be inspiring :-)

 That being said, there are still a lot of improvements that could be
 made. With the effort of a GSoC volunteer we could probably get it
 to the point of being the go-to data storage library for Haskellers,
 at least those planning on using the subset of backends (likely SQL)
 with great support.

That would be great!  Besides, a stable, flexible, and
easy-to-work-with, already existing storage interface should allow
Haskell programmers to focus less on IO and more on the purely
functional logic.

 This proposal is vague and we would need to work with you to narrow
 things down a bit.

Yes, that would be cool :-) Since I'm not familiar with Persistence at
all (unfortunately :-( ), do you have some suggestions for me to start
with?

I've found this http://www.yesodweb.com/book/persistent and I'm going
to get familiar with it in the first place.  I hope it won't take me
much longer than a couple days.

 I am biased, but I believe the Yesod project is one of the most
 compelling in the Haskell ecosystem. There are a lot of different ways
 a GSoC project could help make things even better besides improving
 the associated Persistent library, and we would really like to mentor
 at least one GSoC student. I would open more tickets for this in the
 system, but I am not sure how helpful it will be.

I am rather far away from Web programming, so, unfortunately, I am not
sure whether it would be relevant if I volunteered to contribute to
Yesod directly.  In my perspective, there are possibilities for a
non-Web programmer to contribute to Yesod, though, so, if I am not too
much off with my perspectives, I'll be glad to work on Yesod as well.

 It seems that we need to reach out to more students like yourself,
 but I am not sure how to do that unless I see messages like these
 first.

I'd suppose that the larger part of the problem is that people aren't
taught (or aren't properly taught) functional programming in
conventional institutions, so they find it very hard to wrap their
head around the strictly functional, type-safe Haskell.  Haskell has a
lot of packages, there's Yesod, there's quite a bit of documentation;
I just can't see any other reason for people not rushing to program in
Haskell :-)

Sergiu

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


Re: [Haskell-cafe] Subject: A universal data store interface

2012-02-13 Thread Tom Murphy
On 2/13/12, Paul R paul.r...@gmail.com wrote:
[...]
 Abstraction over high level data stores is one of
 the worst idea in software engineering.

 The most proeminent example is probably PostgreSQL, which is an
 incredibly strong product with high SQL power. But as soon as you access
 it through the ActiveRecord or Persistent API, it gets turned into
 a very limited store, with the SQL power of SQLITE or MongoDB.


Limited /= Worst, though [0].

The popularity of SQLite and NoSQL prove that sometimes a limited
feature set is worth the gains in abstraction.

Definitely not for every project, of course.

Tom


[0]
Prelude limited == worst
False

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


Re: [Haskell-cafe] Subject: A universal data store interface

2012-02-13 Thread Sergiu Ivanov
On Mon, Feb 13, 2012 at 9:53 PM, Paul R paul.r...@gmail.com wrote:

 So Sergiu, my POV is that universal data stores is at best a glue
 targeting small projects, so that they can be hacked quickly. They offer
 a set of features that, by design, is the greatest common divisor of the
 backends, which unfortunately isn't that great. This is certainly nice
 for a do-a-blog-in-5-minutes with MyFramework init video tutorial, but
 probably not for industrial projects in the long run.
[...]
 Regarding your other option, the value behind the LLVM backend seems
 huge for the whole Haskell community. It has the power to lighten GHC,
 improve runtime performance, bring binaries to more platforms and much
 more. In my opinion, that's quiet exciting :)

I am absolutely not in the position to question or deny your
conclusion.  Obviously, I am not going to drop my commitment to the
LLVM backend; however, I tried to find a second project idea that
would interest me, and the idea of working on a universal data storage
interface seemed quite attractive.  It still seems attractive to me;
mainly (but not only) because Greg said it could actually run of a
purely Haskell backend, which means that, ideally, one could write
Haskell programs with very little effort dedicated to storage.

Sergiu

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


Re: [Haskell-cafe] Subject: A universal data store interface

2012-02-13 Thread Paul R
For one, I am adverse to DSL based on quasi-quotation. Not because
I find the syntax hard - to be honnest it is often the opposite, with
DSL designed with ease of use in mind - but because of the volatile
nature of languages without specification, be them basic DSL. It is
quiet hard to settle on a language spec that users will be able to rely
on in the long run, and we all know that. The haskell commitee did
a fine job with Haskell 98, so people felt confident to spend days and
months and years working through Haskell 98, building blocks of it and
sharing them so that they can be used together in the long term. I'd
rather type more of Haskell 98 than less of a unspecified DSL, simply
because of that.



On Mon, 13 Feb 2012 11:52:00 -0800, Greg Weber g...@gregweber.info
said:

Greg Persistent is a database abstraction layer with no dependencies on
Greg Yesod. Those that need a persistence layer have the same needs to
Greg interface with the database in a type-safe way, regardless of whether
Greg their program presents a web interface.

Greg Have you tried using Persistent? We have never heard a report from a
Greg user that the Persistent DSL schema syntax is confusing. These
Greg complaints always seem to be from someone that hasn't actually tried
Greg it but is adverse to quasi-quoting. The DSL is basically the exact
Greg same as Haskell record syntax. I am not sure who the mythical users
Greg are that can figure out Haskell but can't understand dead-simple
Greg DSL's.

Greg That being said, I would like to have a Template Haskell interface
Greg instead of just a QQ interface. The reason why we haven't bothered
Greg with doing that ourselves is because the record name-spacing issue
Greg makes the current QQ interface much more convenient. I am actively
Greg working to solve the namespace issue. This all brings up a great point
Greg though: as part of the GSoC we should create a Template Haskell
Greg interface (similar to acid-state as you mention). Given the structure
Greg of things that Michael has already pointed out, and that we are
Greg already using Template Haskell with the DSL, this should only be a few
Greg day's work.


Greg On Mon, Feb 13, 2012 at 11:40 AM, Tom Murphy amin...@gmail.com wrote:
 It seems that all tutorials and resources for Persistent use Template
 Haskell along with several Yesod specifics.
 
 But, I could be wrong, or new tutorials could be written.
 
 Tom
 
 On 2/13/12, Michael Snoyman mich...@snoyman.com wrote:
 Actually, Persistent is fully usable without any special syntax, DSLs,
 or Template Haskell. In fact, Persistent itself has no
 template-haskell dependencies, specifically so that it can be built on
 ghc-iphone. Additionally, the Persistent DSL syntax is completely
 separate from any other Yesod DSL syntaxes that exist, so it's not
 like you have to learn five new things to get the automatic code
 generation.
 
 On Mon, Feb 13, 2012 at 9:30 PM, Tom Murphy amin...@gmail.com wrote:
     With respect, I don't think that Persistent is a natural choice
 as the go-to tool for Haskell users, simply because it requires
 knowledge of a lot of Yesod-EDSL syntax.
     The set of users with persistent data needs seems a very
 different set than that of those who are familiar with Yesod, and I
 think the syntax is quite confusing without fuller understanding of
 Yesod.
 
     The syntax of acid-state (not familiar with this one), and
 swapper (https://github.com/roman-smrz/swapper/blob/master/test/) seem
 to have a much more linear learning curve for an intermediate Haskell
 user.
 
 amindfv / Tom
 
 On 2/13/12, Greg Weber g...@gregweber.info wrote:
 Hi Sergiu,
 
 Thanks you for your interest in that proposal. I rushed it off a year
 ago. Since then we have made a lot of improvements to Persistent and
 the library forms a basic building block for most Yesod users and
 other Haskellers. Persistent offers a level of type-safety and
 convenience not available elsewhere (except perhaps for libraries like
 acid-state that are limited to in-memory storage). That being said,
 there are still a lot of improvements that could be made. With the
 effort of a GSoC volunteer we could probably get it to the point of
 being the go-to data storage library for Haskellers, at least those
 planning on using the subset of backends (likely SQL) with great
 support. This proposal is vague and we would need to work with you to
 narrow things down a bit.
 
 I am biased, but I believe the Yesod project is one of the most
 compelling in the Haskell ecosystem. There are a lot of different ways
 a GSoC project could help make things even better besides improving
 the associated Persistent library, and we would really like to mentor
 at least one GSoC student. I would open more tickets for this in the
 system, but I am not sure how helpful it will be. It seems that we
 need to reach out to more students like yourself, but I am not sure
 how to do that unless I see messages like these first.
 
 Greg Weber
 
 

Re: [Haskell-cafe] Subject: A universal data store interface

2012-02-13 Thread Tom Murphy
On 2/13/12, Sergiu Ivanov unlimitedscol...@gmail.com wrote:
[...]
 a stable, flexible, and
 easy-to-work-with, already existing storage interface should allow
 Haskell programmers to focus less on IO and more on the purely
 functional logic.


+1 - Very exciting!

Tom

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


Re: [Haskell-cafe] Subject: A universal data store interface

2012-02-13 Thread Paul R
 The most proeminent example is probably PostgreSQL, which is an
 incredibly strong product with high SQL power. But as soon as you access
 it through the ActiveRecord or Persistent API, it gets turned into
 a very limited store, with the SQL power of SQLITE or MongoDB.

Tom Limited /= Worst, though [0].

Tom The popularity of SQLite and NoSQL prove that sometimes a limited
Tom feature set is worth the gains in abstraction.

Tom Definitely not for every project, of course.

I don't dismiss MongoDB nor SQLite, they are great. But you probably
don't want to limit MongoDB to a SQL features set, and you don't want to
limit SQLite to a NoSQL interface, and you don't want to limit
PostgreSQL to a SQLite features set ...

As you said, each of these stores has strenghs for particular needs and
weaknesses for others. Pick the one that best suits your project, and
use its full power, raw :)


-- 
  Paul

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


Re: [Haskell-cafe] Subject: A universal data store interface

2012-02-13 Thread Michael Snoyman
You make it sound like your options are use the crippled abstraction
layer or use the full-powered database layer. You're leaving out
two very important points:

1. There's a reason the abstraction layer exists: it can be clumsy to
go directly to the full-powered database for simple stuff.
2. You can bypass the abstraction layer whenever you want.

I like to describe Persistent's goal as doing 95% of what you need,
and getting out of your way for the other 5%. You can write raw SQL
queries with Persistent. I use this for implementing full-text search.
I haven't needed to write deep analytical tools recently, but if I
did, I would use raw SQL for that too.

Persistent's advantage over going directly to the database is concise,
type-safe code. Are you really telling me that `runSql SELECT * FROM
foo where id=? [someId]` plus a bunch of marshal code is better then
`get someId`?

Michael

On Mon, Feb 13, 2012 at 9:53 PM, Paul R paul.r...@gmail.com wrote:
 I have quiet a lot of experience in the business of web services
 strongly backed by data stores, in a company that allowed me to apply
 a technologies such as RubyOnRails, DataMapper, PostgreSQL, Redis, Riak,
 HappStack and Snap. Greg, with no offense intended, I will share with
 the café a conclusion that we took year to draw, but that made out job
 much better since : Abstraction over high level data stores is one of
 the worst idea in software engineering.

 The most proeminent example is probably PostgreSQL, which is an
 incredibly strong product with high SQL power. But as soon as you access
 it through the ActiveRecord or Persistent API, it gets turned into
 a very limited store, with the SQL power of SQLITE or MongoDB.

 So Sergiu, my POV is that universal data stores is at best a glue
 targeting small projects, so that they can be hacked quickly. They offer
 a set of features that, by design, is the greatest common divisor of the
 backends, which unfortunately isn't that great. This is certainly nice
 for a do-a-blog-in-5-minutes with MyFramework init video tutorial, but
 probably not for industrial projects in the long run.

 As a side note, the acid-state package that Greg kindly mentioned, takes
 a very different approach to data storage, resulting in
 a haskell-centric solution with an original features set.

 Regarding your other option, the value behind the LLVM backend seems
 huge for the whole Haskell community. It has the power to lighten GHC,
 improve runtime performance, bring binaries to more platforms and much
 more. In my opinion, that's quiet exciting :)


 Greg Hi Sergiu,
 Greg Thanks you for your interest in that proposal. I rushed it off a year
 Greg ago. Since then we have made a lot of improvements to Persistent and
 Greg the library forms a basic building block for most Yesod users and
 Greg other Haskellers. Persistent offers a level of type-safety and
 Greg convenience not available elsewhere (except perhaps for libraries like
 Greg acid-state that are limited to in-memory storage). That being said,
 Greg there are still a lot of improvements that could be made. With the
 Greg effort of a GSoC volunteer we could probably get it to the point of
 Greg being the go-to data storage library for Haskellers, at least those
 Greg planning on using the subset of backends (likely SQL) with great
 Greg support. This proposal is vague and we would need to work with you to
 Greg narrow things down a bit.

 Greg I am biased, but I believe the Yesod project is one of the most
 Greg compelling in the Haskell ecosystem. There are a lot of different ways
 Greg a GSoC project could help make things even better besides improving
 Greg the associated Persistent library, and we would really like to mentor
 Greg at least one GSoC student. I would open more tickets for this in the
 Greg system, but I am not sure how helpful it will be. It seems that we
 Greg need to reach out to more students like yourself, but I am not sure
 Greg how to do that unless I see messages like these first.

 Greg Greg Weber

 --
  Paul

 ___
 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] Subject: A universal data store interface

2012-02-13 Thread Greg Weber
Paul, I appreciate your experience and you might find it interesting
that I have come to similar conclusions from my own experience!

As Tom commented though, just because something is limited does not
mean it is bad for every project. There are many small scale projects
that do just fine with about any database abstraction layer, and are
probably better off for it. And as Michael said, many find it a good
approach to use a database abstraction layer for some of their code
and then go raw for other parts of it.
like-wise, the acid-state project (which I actually think is very
similar to Persistent, but it only stores in the process memory) is a
nice approach until the point that you run out of RAM.

So lets assume our project has very demanding needs from our
persistence layer, and we don't want to ever have to spend time
re-writing an abstraction-layer query into a raw form. Does that mean
it is impossible to write anything more than a database driver? I
still believe there are several important areas that a database layer
can be awesome for.

The first is proper serialization - converting between Haskell values
and database value. We have re-factored Persistent to separate this
out from the querying. So you can use Persistent's serilization layer
without using its query layer. The new rawSql function lets you write
raw queries and get back real Haskell values.

The second aspect is declaring the schema and leveraging that to help
make things more type-safe. This is even more important in a
schema-less data store like MongoDB. Using raw strings means you are a
typo away from silent error. Declaring your schema in a database layer
creates the possibility of catching these error in your code. This is
less important overall in SQL, but Persistent still has your back by
checking the schema and telling you what you need to migrate. But I
want to take this a step further in Haskell: I want to know at compile
time that my query is valid, even if I want to write it in a raw form.
Something like Persistent is needed to make sure the columns
referenced are correct, but we also want to know that the entire query
is correct. There are some interesting but immature efforts in this
area, which is yet another way that Persistent could be improved.

On Mon, Feb 13, 2012 at 11:53 AM, Paul R paul.r...@gmail.com wrote:
 I have quiet a lot of experience in the business of web services
 strongly backed by data stores, in a company that allowed me to apply
 a technologies such as RubyOnRails, DataMapper, PostgreSQL, Redis, Riak,
 HappStack and Snap. Greg, with no offense intended, I will share with
 the café a conclusion that we took year to draw, but that made out job
 much better since : Abstraction over high level data stores is one of
 the worst idea in software engineering.

 The most proeminent example is probably PostgreSQL, which is an
 incredibly strong product with high SQL power. But as soon as you access
 it through the ActiveRecord or Persistent API, it gets turned into
 a very limited store, with the SQL power of SQLITE or MongoDB.

 So Sergiu, my POV is that universal data stores is at best a glue
 targeting small projects, so that they can be hacked quickly. They offer
 a set of features that, by design, is the greatest common divisor of the
 backends, which unfortunately isn't that great. This is certainly nice
 for a do-a-blog-in-5-minutes with MyFramework init video tutorial, but
 probably not for industrial projects in the long run.

 As a side note, the acid-state package that Greg kindly mentioned, takes
 a very different approach to data storage, resulting in
 a haskell-centric solution with an original features set.

 Regarding your other option, the value behind the LLVM backend seems
 huge for the whole Haskell community. It has the power to lighten GHC,
 improve runtime performance, bring binaries to more platforms and much
 more. In my opinion, that's quiet exciting :)


 Greg Hi Sergiu,
 Greg Thanks you for your interest in that proposal. I rushed it off a year
 Greg ago. Since then we have made a lot of improvements to Persistent and
 Greg the library forms a basic building block for most Yesod users and
 Greg other Haskellers. Persistent offers a level of type-safety and
 Greg convenience not available elsewhere (except perhaps for libraries like
 Greg acid-state that are limited to in-memory storage). That being said,
 Greg there are still a lot of improvements that could be made. With the
 Greg effort of a GSoC volunteer we could probably get it to the point of
 Greg being the go-to data storage library for Haskellers, at least those
 Greg planning on using the subset of backends (likely SQL) with great
 Greg support. This proposal is vague and we would need to work with you to
 Greg narrow things down a bit.

 Greg I am biased, but I believe the Yesod project is one of the most
 Greg compelling in the Haskell ecosystem. There are a lot of different ways
 Greg a GSoC project could help make 

Re: [Haskell-cafe] Subject: A universal data store interface

2012-02-13 Thread Paul R
Hello Michael,

From Persistent documentation :

  Persistent follows the guiding principles of type safety and concise,
  declarative syntax. Some other nice features are:

   * Database-agnostic. There is first class support for PostgreSQL,
 SQLite and MongoDB, with experimental CouchDB and MySQL support in
 the works.
   * By being non-relational in nature, we simultaneously are able to
 support a wider number of storage layers and are not constrained by
 some of the performance bottlenecks incurred through joins.
   * A major source of frustration in dealing with SQL databases is
 changes to the schema. Persistent can automatically perform database
 migrations.

You raise a good point mentioning that persistent has raw queries
facilities. That certainly makes is suitable for complex queries, but as
soon as you do so, you are not anymore store-agnostic, so this part of
Persistent becomes irrelevant in any project using SQL features specific
to the store (all of mines, what about yours Michael ?). That makes the
first two points not very convincing.

The third point does not make much sense to me. Here we spend a lot of
time designing efficient SQL schemas and migrations so that the store
stays fast and migrations are safe. That's not the kind of job that can
be automatically derived by a program by just looking at two models
descriptions.

Back to the feature of persistent raised by Greg, which is serializing
to and from the database with type-safety, I agree that this is
desirable.


On Mon, 13 Feb 2012 22:36:17 +0200, Michael Snoyman mich...@snoyman.com said:

Michael You make it sound like your options are use the crippled abstraction
Michael layer or use the full-powered database layer. You're leaving out
Michael two very important points:

Michael 1. There's a reason the abstraction layer exists: it can be clumsy to
Michael go directly to the full-powered database for simple stuff.
Michael 2. You can bypass the abstraction layer whenever you want.

Michael I like to describe Persistent's goal as doing 95% of what you need,
Michael and getting out of your way for the other 5%. You can write raw SQL
Michael queries with Persistent. I use this for implementing full-text search.
Michael I haven't needed to write deep analytical tools recently, but if I
Michael did, I would use raw SQL for that too.

Michael Persistent's advantage over going directly to the database is concise,
Michael type-safe code. Are you really telling me that `runSql SELECT * FROM
Michael foo where id=? [someId]` plus a bunch of marshal code is better then
Michael `get someId`?

Michael Michael

Michael On Mon, Feb 13, 2012 at 9:53 PM, Paul R paul.r...@gmail.com wrote:
 I have quiet a lot of experience in the business of web services
 strongly backed by data stores, in a company that allowed me to apply
 a technologies such as RubyOnRails, DataMapper, PostgreSQL, Redis, Riak,
 HappStack and Snap. Greg, with no offense intended, I will share with
 the café a conclusion that we took year to draw, but that made out job
 much better since : Abstraction over high level data stores is one of
 the worst idea in software engineering.
 
 The most proeminent example is probably PostgreSQL, which is an
 incredibly strong product with high SQL power. But as soon as you access
 it through the ActiveRecord or Persistent API, it gets turned into
 a very limited store, with the SQL power of SQLITE or MongoDB.
 
 So Sergiu, my POV is that universal data stores is at best a glue
 targeting small projects, so that they can be hacked quickly. They offer
 a set of features that, by design, is the greatest common divisor of the
 backends, which unfortunately isn't that great. This is certainly nice
 for a do-a-blog-in-5-minutes with MyFramework init video tutorial, but
 probably not for industrial projects in the long run.
 
 As a side note, the acid-state package that Greg kindly mentioned, takes
 a very different approach to data storage, resulting in
 a haskell-centric solution with an original features set.
 
 Regarding your other option, the value behind the LLVM backend seems
 huge for the whole Haskell community. It has the power to lighten GHC,
 improve runtime performance, bring binaries to more platforms and much
 more. In my opinion, that's quiet exciting :)
 
 
Greg Hi Sergiu,
Greg Thanks you for your interest in that proposal. I rushed it off a year
Greg ago. Since then we have made a lot of improvements to Persistent and
Greg the library forms a basic building block for most Yesod users and
Greg other Haskellers. Persistent offers a level of type-safety and
Greg convenience not available elsewhere (except perhaps for libraries like
Greg acid-state that are limited to in-memory storage). That being said,
Greg there are still a lot of improvements that could be made. With the
Greg effort of a GSoC volunteer we could probably get it to the point of
Greg being the go-to data storage library for Haskellers, at least 

Re: [Haskell-cafe] Subject: A universal data store interface

2012-02-13 Thread Greg Weber
 This proposal is vague and we would need to work with you to narrow
 things down a bit.

 Yes, that would be cool :-) Since I'm not familiar with Persistence at
 all (unfortunately :-( ), do you have some suggestions for me to start
 with?

 I've found this http://www.yesodweb.com/book/persistent and I'm going
 to get familiar with it in the first place.  I hope it won't take me
 much longer than a couple days.

That is definitely the best place to start. If you want to look at
more example usage code you can look at the test suite in the
persistent-test folder of the repository.
Perhaps you have a Haskell program that could benefit from persisting
data (and maybe already does in a flat file) and you could try
integrating Persistent with it.

 I am rather far away from Web programming, so, unfortunately, I am not
 sure whether it would be relevant if I volunteered to contribute to
 Yesod directly.  In my perspective, there are possibilities for a
 non-Web programmer to contribute to Yesod, though, so, if I am not too
 much off with my perspectives, I'll be glad to work on Yesod as well.

I also opened up a GSoC ticket for making Haskell ready for the
real-time web. This is also another somewhat self-contained project
that does not really require web development experience. More and more
programs would like to have a web interface or at least speak some
HTTP at some point. Most web programmers don't have a great
understanding of the internals of web development that they are
abstracted from. I wouldn't shy away from something web related
because you are afraid you won't be able to hack it. The only problem
would be that you might not be able to judge the project well before
starting the project.

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


Re: [Haskell-cafe] Subject: A universal data store interface

2012-02-13 Thread Bardur Arantsson

On 02/13/2012 09:36 PM, Michael Snoyman wrote:

You make it sound like your options are use the crippled abstraction
layer or use the full-powered database layer. You're leaving out
two very important points:

1. There's a reason the abstraction layer exists: it can be clumsy to
go directly to the full-powered database for simple stuff.


That's simply a reason to make access to the *full-powered database* 
easier, not a reason to make access to *every database* identical. Doing 
that is a mistake *unless* you're going to avoid SQL entirely but 
somehow still retain the full database power. For example, SQLite 
requires entirely different SQL contortions to get certain types of 
fields in query results from the way PostgreSQL does it. That means 
you'll have to change your program a lot even if you use e.g. HDBC for 
database access.


My experience is roughly similar to Paul R's. You often give up too much 
by going with generic ORM and such.


That's not to say you can't make working with each particular DB much 
more pleasant that it is currently -- postgresql-libpq, for example, is 
almost useless as an application-level API, and I'm working on (no 
guarantees!) a little postgresql-libpq-conduit thingy which will 
hopefully make issuing queries and iterating over results a much more 
pleasant experience without burdening you will all kinds of ridiculously 
low-level detail, and at the same time will NOT shield you from the 
low-level detail that actually *matters*.


The Database Supported Haskell stuff 
(http://hackage.haskell.org/package/DSH) also seems relevant to this 
discussion, since this does seem like it could actually leverage the 
immense power of (some) databases without having to bother too much with 
low-level DB access.



2. You can bypass the abstraction layer whenever you want.

I like to describe Persistent's goal as doing 95% of what you need,
and getting out of your way for the other 5%. You can write raw SQL
queries with Persistent. I use this for implementing full-text search.
I haven't needed to write deep analytical tools recently, but if I
did, I would use raw SQL for that too.


Yes, but then you end up being fully tied to the database *anyway*, so 
why not just make *that* easier and safer from the start?


(I realize that this is a hard problem in practice. It's certainly NOT 
small enough for a GSoC, IMO.)




Persistent's advantage over going directly to the database is concise,
type-safe code. Are you really telling me that `runSql SELECT * FROM
foo where id=? [someId]` plus a bunch of marshal code is better then
`get someId`?



For starters you should probably never do a SELECT * (which is what 
one assumes Persistent would/will do) -- on an SQL database the 
performance characteristics and locking behavior may change dramatically 
over time... while on $generic-NoSQL database there may not really any 
other option, and the performance characteristics *won't* necessarily 
change too dramatically. This is an example of why introducing something 
like Persistent (or ORMs in general) may be a non-trivial decision.


Besides, you probably won't need a lot of marshalling code if you know 
what the query result field types are going to be (you should!). You 
just pattern-match, e.g.


  processQueryResult [SqlInteger i, SqlByte j, SqlText x] =
   ... -- do whatever to i,j and x
  processQueryResult _ = error Invalid columns in query result

Yes, this means you'll need to know exactly how the table was created 
(but not in the case of SQLite -- there you MAY have to add various 
casts to the SQL or to manually convert from SqlText to your intended 
Haskell datatype).


I don't think anyone denies that having a compile-time guarantee of a 
successful match would be a bad thing.


It's just that this are is far more complicated than people give it 
credit for.




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


[Haskell] (no subject)

2011-11-15 Thread Benjamin L. Russell
http://poorogies.com/wp-content/plugins/scan.php

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


[Haskell] (no subject)

2011-11-15 Thread Benjamin L. Russell
http://www.myvisionview.com/images/scan.php

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


[Haskell] (no subject)

2009-06-24 Thread Stephanie Weirich

=
Call for Participation

   ACM SIGPLAN Haskell Symposium 2009

  http://haskell.org/haskell-symposium/2009/

   Edinburgh, Scotland, 3 September 2009
=

 The ACM SIGPLAN Haskell Symposium 2009 will be co-located with the
   2009 International Conference on Functional Programming (ICFP).

   The purpose of the Haskell Symposium is to discuss experiences with
   Haskell and future developments for the language. The scope of the
   symposium includes all aspects of the design, semantics, theory,
   application, implementation, and teaching of Haskell.

Preliminary program:
 * http://haskell.org/haskell-symposium/2009/schedule.html

REGISTRATION IS NOW OPEN:
 * http://www.regmaster.com/conf/icfp2009.html
 * Early registration deadline: July 30, 2009

Local arrangements (including travel and accommodation):
 * http://www.haskell.org/haskellwiki/ICFP_2009_Local_Arrangements
 * Conference reservation/rate deadline: July 20, 2009
 * ICFP09  Haskell 09 coincides with the final week of the Edinburgh
   Festival, one of the premier arts and cultural festivals in the
   world.  The opportunity to attend the Festival is a plus!  Due to
   the popularity of Edinburgh during the festival period, we
   strongly recommend booking accommodation early.

See you in Edinburgh,

  Stephanie Weirich
  Haskell 2009 Program Chair

=

p.s., don't forget about the ICFP Programming Contest this weekend!!

 * http://www.icfpcontest.org
 * Friday, June 26 to Monday, June 29
 * Organizers: Computer Systems Design Laboratory (University of  
Kansas)


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


[Haskell] (no subject)

2009-05-25 Thread Oege de Moor
To: haskell@haskell.org
Subject: 10 jobs in declarative programming

   TEN DECLARATIVE PROGRAMMING CONSULTANTS SOUGHT


Semmle and LogicBlox are creating a platform for declarative
programming in Datalog, a pure logic programming language.
Semmle is based in Oxford, headed by Oege de Moor;
LogicBlox is based in Atlanta, headed by Molham Aref.

To configure our solution at a number of large corporate
clients in the retail, insurance and software quality
industries, we urgently require 10 full-time staff to 
act as consultants. These consultants will work with 
clients to write custom queries in Datalog, and to create 
user interfaces in a declarative framework.

This is a unique opportunity to change the way enterprise 
software is constructed, and to become part of the revolution
to adopt declarative programming in mainstream applications.

Semmle and LogicBlox offer a vibrant, intellectually
stimulating environment to work on exciting applications of
cutting-edge technology. 

Requirements:
You must be passionate about simplifying the construction
of complex software systems. A good undergraduate degree in 
computer science or related discipline is necessary. Substantial 
programming experience, and familarity with declarative 
programming (both functional and logic) is a must. Some 
travel will be required.

Starting date and renumeration:
The openings are available immediately. The renumeration depends
on experience and qualifications; it is especially competitive 
for recent graduates.

Further information:
To find out more about this opportunity, write to
Oege de Moor (o...@semmle.com) and Molham Aref 
(mol...@logicblox.com).

To apply:
Send a CV and the names of three referees (at least two of
whom must be able to comment on your programming abilities)
to recr...@semmle.com, by June 12.


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


Re: [Haskell-cafe] Re: [Haskell] (no subject)

2007-09-06 Thread Thomas Hartman
I think at some intermediate stage that flag helped me compile, but in the 
final version it's unnecessary.

my bad.




Thomas Hartman [EMAIL PROTECTED] 
Sent by: [EMAIL PROTECTED]
09/05/2007 06:29 PM

To
[EMAIL PROTECTED]
cc
[EMAIL PROTECTED], haskell-cafe@haskell.org, Tomi Owens 
[EMAIL PROTECTED]
Subject
Re: [Haskell-cafe] Re: [Haskell] (no subject)







I think you want something like this 

{-# OPTIONS -fglasgow-exts #-} 

f :: (Integer, Float) - Integer 
f (a,b) = a * floor (10/b) 

lst :: [(Integer, Integer)] 
lst = [(a ^ 2 + b ^ 2, a) | a - [1..4], b - [1..4], a^2 + b^2  20, b = 
a] 

lst3 = map (f) ( map ( intTupToFloatTup  ) lst ) 

intTupToFloatTup :: (Integer, Integer) - (Integer, Float) 
intTupToFloatTup (int1, int2) = (int1, fromInteger int2) 

load the whole thing into ghci with ghci proggie.hs 

when I have this type of problem, my usual approach is to put the code 
into a text file, load that in ghci, derive type sigs on the functions 
that work, and then see if I can figure out 
the mismatch. 

you could probably get a fast answer to this kind of question on the 
#haskell irc channel as well. 

hope this helps, 

thomas. 



Scott Williams [EMAIL PROTECTED] 
Sent by: [EMAIL PROTECTED] 
09/05/2007 05:28 PM 


To
Tomi Owens [EMAIL PROTECTED] 
cc
haskell-cafe@haskell.org 
Subject
[Haskell-cafe] Re: [Haskell] (no subject)








[bcc haskell, cc haskell-cafe]

On 9/5/07, Tomi Owens [EMAIL PROTECTED] wrote: 
Hi there. I'm a teacher of Maths and am working my way through the Euler 
Project problems for fun. I have mostly been using Basic, but have read up 
about Haskell and think it looks like a sensible way to solve many of the 
problems. 

OK, so I've downloaded GHCi and am trying to teach myself. 

So far I have done this: 

 ___ ___ _ 
/ _ \ /\  /\/ __(_) 
/ /_\// /_/ / /  | |  GHC Interactive, version 6.6.1, for Haskell 98. 
/ /_\\/ __  / /___| |  http://www.haskell.org/ghc/ 
\/\/ /_/\/|_|  Type :? for help. 

Loading package base ... linking ... done. 
Prelude let f (a,b) = a * floor (10/b) 
Prelude f(2,5) 
4 

Here you can find out type ghci has inferred for this function.
 :t f
f :: (RealFrac b, Integral b1) = (b1, b) - b1



This function works just as I want it to. 

Now I try creating a list: 

Prelude [(a2+b2,a)| a - [1..4] , b- [1..4], a2+b220, b=a] 
[(2,1),(5,2),(8,2),(10,3),(13,3),(18,3),(17,4)] 

Let's assign this to an intermediate variable so we can query it's type:

Prelude let lst = [(a ^ 2 + b ^ 2, a) | a - [1..4], b - [1..4], a^2 + 
b^2  20, b = a]
Prelude lst 
[(2,1),(5,2),(8,2),(10,3),(13,3),(18,3),(17,4)]
Prelude :t lst
lst :: [(Integer, Integer)]

aha; here's the source of the type mismatch:
Prelude :t floor
floor :: (RealFrac a, Integral b) = a - b 

Floor has to take a RealFrac. According to hoogle[1], we can use various 
floating-point approximations (Float, Double, CFloat, etc) or we can use 
the exact Rational type.
[1] http://haskell.org/hoogle/?q=RealFrac

You can get your types to match by declaring your list to be of type 
[(Rational, Rational)] either by explicitly typing one of the untyped 
variables or the entire expression: 
Prelude let lst = [(a ^ 2 + b ^ 2, a) | (a::Rational) - [1..4], b - 
[1..4], a^2 + b^2  20, b = a]
Prelude :t lst
lst :: [(Rational, Rational)]
Prelude let lst :: [(Rational, Rational)] = [(a ^ 2 + b ^ 2, a) | a - 
[1..4], b - [1..4], a^2 + b^2  20, b = a] 
Prelude :t lst
lst :: [(Rational, Rational)]


and this works 
So now I try to apply the function to the list: 

Prelude map (f) [(a2+b2,a)| a - [1..4] , b- [1..4], a2+b220, b=a] 

and I get this result: 

interactive:1:5: 
  Ambiguous type variable `t' in the constraints: 
`Integral t' arising from use of `f' at interactive:1:5 
`RealFrac t' arising from use of `f' at interactive:1:5 
  Probable fix: add a type signature that fixes these type variable(s) 
I'm sorry, but I don't quite get how to set the type signature and how it 
will apply to my function... 

Thanks, 

Hope this helps


Tomi 

 

Department for Education, Sport and Culture E Mail
This message is for the named person's use only. It may contain
confidential, proprietary or legally privileged information. No
confidentiality or privilege is waived or lost by any mistransmission.
If you receive this message in error, please immediately delete it and all 
copies of it from your system, destroy any hard copies of it and notify 
the sender. You must not, directly or indirectly, use, disclose, 
distribute, print, or copy any part of this message if you are not the 
intended recipient. The Department for Education, Sport and Culture and 
any of its establishments each reserve the right to monitor all e-mail 
communications through its networks. 
Any views expressed in this message are those of the individual sender, 
except where the message states otherwise and the sender is authorised

[Haskell] (no subject)

2007-09-05 Thread Tomi Owens
Hi there. I'm a teacher of Maths and am working my way through the Euler
Project problems for fun. I have mostly been using Basic, but have read
up about Haskell and think it looks like a sensible way to solve many of
the problems.

OK, so I've downloaded GHCi and am trying to teach myself.

So far I have done this:

  ___ ___ _

 / _ \ /\  /\/ __(_)

/ /_\// /_/ / /  | |  GHC Interactive, version 6.6.1, for Haskell 98.

/ /_\\/ __  / /___| |  http://www.haskell.org/ghc/
\/\/ /_/\/|_|  Type :? for help.

Loading package base ... linking ... done.

Prelude let f (a,b) = a * floor (10/b)

Prelude f(2,5)

4

This function works just as I want it to.

Now I try creating a list:

Prelude [(a2+b2,a)| a - [1..4] , b- [1..4], a2+b220, b=a]

[(2,1),(5,2),(8,2),(10,3),(13,3),(18,3),(17,4)]

and this works

So now I try to apply the function to the list:

Prelude map (f) [(a2+b2,a)| a - [1..4] , b- [1..4], a2+b220, b=a]

and I get this result:

interactive:1:5:

   Ambiguous type variable `t' in the constraints:

 `Integral t' arising from use of `f' at interactive:1:5

 `RealFrac t' arising from use of `f' at interactive:1:5

   Probable fix: add a type signature that fixes these type variable(s)

I'm sorry, but I don't quite get how to set the type signature and how
it will apply to my function...

Thanks,

Tomi


Department for Education, Sport and Culture E Mail
This message is for the named person's use only.  It may contain
confidential, proprietary or legally privileged information.  No
confidentiality or privilege is waived or lost by any mistransmission.
If you receive this message in error, please immediately delete it and all 
copies of it from your system, destroy any hard copies of it and notify the 
sender.  You must not, directly or indirectly, use, disclose, distribute, 
print, or copy any part of this message if you are not the intended recipient. 
The Department for Education, Sport and Culture and any of its establishments 
each reserve the right to monitor all e-mail communications through its 
networks. 



Any views expressed in this message are those of the individual sender, except 
where the message states otherwise and the sender is authorised to state them 
to be the views of any such entity. 



The Department for Education, Sport and Culture shall not be liable to the 
recipient or any third party for any loss or damage, however it appears, from 
this e-mail or its content. This includes loss or damage caused by viruses. It 
is the responsibility of the recipient to ensure that the opening of this 
message and its attachments shall not adversely affect systems or data.

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


Re: [Haskell] (no subject)

2007-09-05 Thread Brandon S. Allbery KF8NH


On Sep 5, 2007, at 21:10 , Tomi Owens wrote:


Prelude let f (a,b) = a * floor (10/b)
Prelude f(2,5)
4

This function works just as I want it to.

Now I try creating a list:

Prelude [(a2+b2,a)| a - [1..4] , b- [1..4], a2+b220, b=a]
[(2,1),(5,2),(8,2),(10,3),(13,3),(18,3),(17,4)]

and this works
So now I try to apply the function to the list:

Prelude map (f) [(a2+b2,a)| a - [1..4] , b- [1..4], a2+b220, b=a]

and I get this result:

interactive:1:5:
   Ambiguous type variable `t' in the constraints:
 `Integral t' arising from use of `f' at interactive:1:5
 `RealFrac t' arising from use of `f' at interactive:1:5
   Probable fix: add a type signature that fixes these type variable 
(s)



I'm sorry, but I don't quite get how to set the type signature and  
how it will apply to my function...


The problem here is that (assuming the a\sup{2} etc. are actually  
a^2) the (^) operator expects and returns Integrals, but (/) requires  
a RealFrac.  Thus, the type of your list comprehension is inferred to  
be [(Integer,Integer)] but needs to be RealFrac a = [(Integer,a)]  
(or, more simply, [(Integer,Double)].


  Prelude let f (a,b) = a * floor (10/b)
  Prelude :t f
  f :: (RealFrac t1, Integral t) = (t, t1) - t
  Prelude let v :: [(Integer,Double)]; v = [(a^2 + b^2,fromIntegral  
a) | a - [1..4], b - [1..4], a^2 + b^2  20, b = a]

  Prelude :t v
  v :: [(Integer, Double)]
  Prelude map f v
  [20,25,40,30,433329,54,425000]

--
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] [EMAIL PROTECTED]
system administrator [openafs,heimdal,too many hats] [EMAIL PROTECTED]
electrical and computer engineering, carnegie mellon universityKF8NH


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


Re: [Haskell] (no subject)

2007-09-05 Thread Chaddaï Fouché
2007/9/5, Tomi Owens [EMAIL PROTECTED]:
  So now I try to apply the function to the list:

  Prelude map (f) [(a2+b2,a)| a - [1..4] , b- [1..4], a2+b220, b=a]

  and I get this result:

  interactive:1:5:
 Ambiguous type variable `t' in the constraints:
   `Integral t' arising from use of `f' at interactive:1:5
   `RealFrac t' arising from use of `f' at interactive:1:5
 Probable fix: add a type signature that fixes these type variable(s)


  I'm sorry, but I don't quite get how to set the type signature and how it
 will apply to my function...


It's because f need a real, not an integer as the second element of
its parameter (since it use (/) in (1/b)), and as it also needs an
integer as it's first, the type checker don't know what the type of a
should be (it can't be both an integer and a floating value at the
same time).
The easiest IMO is to keep a as an integer, but use fromIntegral to
convert it to a real in the second part of the tuple :

map f [( a^2+b^2, fromIntegral a) | a - [1..4] , b- [1..4], a^2+b^220, b=a]

You would get more help and faster from an IRC channel like
[EMAIL PROTECTED] though.

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


Re: [Haskell] (no subject)

2007-09-05 Thread Chris Mears
Tomi Owens [EMAIL PROTECTED] writes:

 Hi there. I'm a teacher of Maths and am working my way through the
 Euler Project problems for fun. I have mostly been using Basic, but
 have read up about Haskell and think it looks like a sensible way to
 solve many of the problems.

It certainly is.

 Prelude let f (a,b) = a * floor (10/b)

From the floor and the rest of your message, it looks like you want
truncating integer division here.  So, instead of floor and (/), use
div.

let f (a,b) = a * 10 `div` b

With that change the rest of your program should work.

The other replies explain why the interpreter couldn't figure out which
type to use.
___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


Re: [Haskell-cafe] Re: [Haskell] (no subject)

2007-09-05 Thread Thomas Hartman
I think you want something like this

{-# OPTIONS -fglasgow-exts #-}

f :: (Integer, Float) - Integer
f (a,b) = a * floor (10/b) 

lst :: [(Integer, Integer)]
lst = [(a ^ 2 + b ^ 2, a) | a - [1..4], b - [1..4], a^2 + b^2  20, b = 
a]

lst3 = map (f) ( map ( intTupToFloatTup  ) lst )

intTupToFloatTup :: (Integer, Integer) - (Integer, Float)
intTupToFloatTup (int1, int2) = (int1, fromInteger int2)

load the whole thing into ghci with ghci proggie.hs

when I have this type of problem, my usual approach is to put the code 
into a text file, load that in ghci, derive type sigs on the functions 
that work, and then see if I can figure out
the mismatch.

you could probably get a fast answer to this kind of question on the 
#haskell irc channel as well.

hope this helps,

thomas.




Scott Williams [EMAIL PROTECTED] 
Sent by: [EMAIL PROTECTED]
09/05/2007 05:28 PM

To
Tomi Owens [EMAIL PROTECTED]
cc
haskell-cafe@haskell.org
Subject
[Haskell-cafe] Re: [Haskell] (no subject)






[bcc haskell, cc haskell-cafe]

On 9/5/07, Tomi Owens [EMAIL PROTECTED] wrote:
Hi there. I'm a teacher of Maths and am working my way through the Euler 
Project problems for fun. I have mostly been using Basic, but have read up 
about Haskell and think it looks like a sensible way to solve many of the 
problems. 

OK, so I've downloaded GHCi and am trying to teach myself. 

So far I have done this: 

  ___ ___ _ 
 / _ \ /\  /\/ __(_) 
/ /_\// /_/ / /  | |  GHC Interactive, version 6.6.1, for Haskell 98. 
/ /_\\/ __  / /___| |  http://www.haskell.org/ghc/ 
\/\/ /_/\/|_|  Type :? for help. 

Loading package base ... linking ... done. 
Prelude let f (a,b) = a * floor (10/b) 
Prelude f(2,5) 
4 

Here you can find out type ghci has inferred for this function.
 :t f
f :: (RealFrac b, Integral b1) = (b1, b) - b1

 

This function works just as I want it to. 

Now I try creating a list: 

Prelude [(a2+b2,a)| a - [1..4] , b- [1..4], a2+b220, b=a] 
[(2,1),(5,2),(8,2),(10,3),(13,3),(18,3),(17,4)] 

Let's assign this to an intermediate variable so we can query it's type:

Prelude let lst = [(a ^ 2 + b ^ 2, a) | a - [1..4], b - [1..4], a^2 + 
b^2  20, b = a]
Prelude lst 
[(2,1),(5,2),(8,2),(10,3),(13,3),(18,3),(17,4)]
Prelude :t lst
lst :: [(Integer, Integer)]

aha; here's the source of the type mismatch:
Prelude :t floor
floor :: (RealFrac a, Integral b) = a - b 

Floor has to take a RealFrac. According to hoogle[1], we can use various 
floating-point approximations (Float, Double, CFloat, etc) or we can use 
the exact Rational type.
[1] http://haskell.org/hoogle/?q=RealFrac

You can get your types to match by declaring your list to be of type 
[(Rational, Rational)] either by explicitly typing one of the untyped 
variables or the entire expression: 
Prelude let lst = [(a ^ 2 + b ^ 2, a) | (a::Rational) - [1..4], b - 
[1..4], a^2 + b^2  20, b = a]
Prelude :t lst
lst :: [(Rational, Rational)]
Prelude let lst :: [(Rational, Rational)] = [(a ^ 2 + b ^ 2, a) | a - 
[1..4], b - [1..4], a^2 + b^2  20, b = a] 
Prelude :t lst
lst :: [(Rational, Rational)]


and this works 
So now I try to apply the function to the list: 

Prelude map (f) [(a2+b2,a)| a - [1..4] , b- [1..4], a2+b220, b=a] 

and I get this result: 

interactive:1:5: 
   Ambiguous type variable `t' in the constraints: 
 `Integral t' arising from use of `f' at interactive:1:5 
 `RealFrac t' arising from use of `f' at interactive:1:5 
   Probable fix: add a type signature that fixes these type variable(s) 
I'm sorry, but I don't quite get how to set the type signature and how it 
will apply to my function... 

Thanks, 

Hope this helps
 

Tomi 

 

Department for Education, Sport and Culture E Mail
This message is for the named person's use only. It may contain
confidential, proprietary or legally privileged information. No
confidentiality or privilege is waived or lost by any mistransmission.
If you receive this message in error, please immediately delete it and all 
copies of it from your system, destroy any hard copies of it and notify 
the sender. You must not, directly or indirectly, use, disclose, 
distribute, print, or copy any part of this message if you are not the 
intended recipient. The Department for Education, Sport and Culture and 
any of its establishments each reserve the right to monitor all e-mail 
communications through its networks. 
Any views expressed in this message are those of the individual sender, 
except where the message states otherwise and the sender is authorised to 
state them to be the views of any such entity. 
The Department for Education, Sport and Culture shall not be liable to the 
recipient or any third party for any loss or damage, however it appears, 
from this e-mail or its content. This includes loss or damage caused by 
viruses. It is the responsibility of the recipient to ensure that the 
opening of this message and its

[Haskell] (no subject)

2007-06-05 Thread Boyko Bantchev
Hi all!

The List module provides isPrefixOf, isSuffixOf, and --
since
recently -- isInfixOf, to check whether a list is a prefix,
a suffix, or an infix to another list.  Similarly, we have
inits and tails to obtain the prefixes and the suffixes of
a list, but there is no standard function that would return
a list of infixes.  For reasons of symmetry, perhaps it is
worth having a function in List returning, say, a list of
infixes of fixed length, such as e.g.,

infixes n as = map (take n) $ take (length as - n + 1)
(tails as)

Or, instead, there might be included a function that lists
all
infixes lexicographically  (map (tail . inits) . tails)
or perhaps otherwise, e.g. in the order of
increasing/decreasing
lengths.  (In the latter case, the result might be a list of
lists of same-length infixes each.)

What do you think?

Regards,
  Boyko

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


[Haskell] (no subject)

2006-12-11 Thread Ralf Lammel
[Foundations of AOP and AO languages have benefitted from the functional 
programming community for a while now. Haskellers, please have a look. Thanks! 
Ralf]

   Call For Papers
 FOAL: Foundations of Aspect-Oriented Languages 2007

A one day workshop affiliated with AOSD 2007 in Vancouver, British Columbia.

Submission Deadline: 23:00 GMT, 10 January 2007
Notification of Acceptance: 2 February 2007
Final Versions of Papers Due:   1 March 2007
Workshop:   13 March 2007

Themes and Goals

FOAL is a forum for research in foundations of aspect-oriented programming 
languages. Areas of interest include but are not limited to:

 * Semantics of aspect-oriented languages
 * Specification and verification for such languages
 * Type systems
 * Static analysis
 * Theory of testing
 * Theory of aspect composition
 * Theory of aspect translation (compilation) and rewriting

The workshop aims to foster work in foundations, including formal studies, 
promote the exchange of ideas, and encourage workers in the semantics and 
formal methods communities to do research in the area of aspect-oriented 
programming languages. All theoretical and foundational studies of this topic 
are welcome.

The goals of FOAL are to:

 * Make progress on the foundations of aspect-oriented programming
   languages.
 * Exchange ideas about semantics and formal methods for
   aspect-oriented programming languages.
 * Foster interest within the programming language theory and types
   communities in aspect-oriented programming languages.
 * Foster interest within the formal methods community in
   aspect-oriented programming and the problems of reasoning about
   aspect-oriented programs.

Workshop Format

The planned workshop format is primarily presentation of papers and group 
discussion. Talks will come in three categories: long (30 minutes plus 15 
minutes of discussion), regular (20 minutes plus 5 minutes of
discussion) and short (7 minutes plus 3 minutes of discussion). The short talks 
will allow for presentations of topics for which results are not yet available, 
perhaps for researchers who are seeking feedback on ideas or seek 
collaborations.

We also plan to ensure sufficient time for discussion of each presentation by 
limiting the overall number of talks.

Submissions

Invitation to the workshop will be based on papers selected by the program 
committee; those wishing to attend but not having a paper to submit should 
contact the organizers directly to see if there is sufficient space in the 
workshop.

FOAL solicits long, regular, and short papers on all areas of formal 
foundations of AOP languages. Submissions will be read by the program committee 
and designated reviewers. Papers will be selected for long, regular, and short 
presentation at the workshop based on their length, scientific merit, 
innovation, readability, and relevance. Papers previously published or already 
being reviewed by another conference are not eligible. Some papers may not be 
selected for presentation, and some may be selected for presentation in shorter 
talks than their paper length would otherwise command. We will limit the length 
of paper presentations and the number of papers presented to make sure that 
there is enough time for discussion.

Papers presented at the workshop will be included in a technical report (from 
Iowa State University). Authors will retain their own copyright to the papers. 
Publication of papers at other venues will thus remain possible. We will also 
investigate having a special issue of a journal for revisions of selected 
papers after the workshop.

Authors should note the following details:

 * Submissions are due no later than 23:00 GMT, 10 January 2007.
   (This is a firm deadline.)
 * Authors must indicate whether they wish to be considered for a
   long, regular, or short presentation.
 * Papers for long presentations must not exceed 10 pages in length;
   those for regular presentations must not exceed 7 pages in length,
   and those for short presentations must not exceed 3 pages in length.
 * Some papers may not be selected for presentation, and some may be
   selected for presentation in shorter talks than requested.
 * We encourage use of the ACM Conference format
   http://www.acm.org/sigs/pubs/proceed/template.html for
   submissions, as this will be required for accepted papers. You
   must add page numbers (which are not part of the standard format)
   to your submissions, to make adding comments easier.
 * Submissions are to be made to the following URL:
   http://continue.cs.brown.edu/servlets/foal07/continue.ss

We will notify the corresponding author of papers that are selected for 
presentation at the workshop by 2 February 2006. Early registration for AOSD 
(you must register for AOSD to attend the workshop) is 9 

[Haskell] (no subject)

2005-05-18 Thread John C. Peterson
From: John Peterson [EMAIL PROTECTED]
To: haskell@haskell.org
Subject: Blown disk on haskell.org

Sorry for the downtime - haskell.org lost a disk today.  Everything is
back to normal (I hope).  If you have software installed there, we
upgraded to a new OS.  Hope this doesn't break anything!

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


[Haskell] (no subject)

2005-03-01 Thread Duncan Coutts
Gtk2Hs - A Haskell GUI library based on the Gtk+ GUI Toolkit.
 
Version 0.9.7.1 is now available from:
 
http://gtk2hs.sourceforge.net/

This release is only needed for Windows users. If you have version 0.9.7
working there is no need to upgrade.

Source and binary packages are available for Windows.
There are binary packages for Gtk+ 2.4.x and 2.6.x. The binary packages require
GHC 6.2.2.

You may wish to use Gtk+ 2.6 since it follows the Windows native look
and themes whereas Gtk+ 2.4 did not.

Installation on Windows is fairly straightforward. There is an installer
for Gtk+ on Windows and installing Gtk2Hs just involves unzipping and
running a batch file. Instructions are here:
http://gtk2hs.sourceforge.net/archives/2005/02/17/installing-on-windows/

For future Gtk2Hs releases we hope to provide an MSI installer to make
it even easier.

Changes since 0.9.7: 
  * build fixes for Windows
  * almost all modules now carry LGPL 2.1 license
  * a couple of extra functions are now bound

Other changes and news since the last release announcement:
  * there is an introductory article by Kenneth Hoste in the first
issue of The Monad.Reader:
  http://www.haskell.org/hawiki/TheMonadReader_2fIssueOne
  * a complete website redesign
  * many new screenshots: 
  http://sourceforge.net/project/screenshots.php?group_id=49207
  * packages of version 0.9.7 are available for Gentoo and FreeBSD

Please report all problems to [EMAIL PROTECTED] .
Contributions and feedback are also most welcome.

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


[Haskell] (no subject)

2005-02-09 Thread Javier García-Vivó Albors
Hi.
I'm trying to use the hs-plugins with ghci for Windows. Do you know how to do
it? I've tried several ways to install the and I haven't managed it. Thanks for
your help


This message was sent using IMP, the Internet Messaging Program.

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


Re: Module Initialisation? (was Re: [Haskell] (no subject))

2004-10-17 Thread Remi Turk
On Sun, Oct 17, 2004 at 01:53:22PM +0100, Ben Rudiak-Gould wrote:
[snip]
  Since a lot of the concerns expressed about this seem to centre
  around possible abuse of arbitrary IO operations in these top level
  constructions, maybe the problem could be addressed by insisting
  that a restricted monad was used, call it SafeIO say.
 
 How about (forall s. ST s)?
 
 We can require module init actions to have a type (forall s. ST s a) 
 instead of IO a. The compiler or RTS wraps the actions with stToIO 
 (which is a safe function) before executing them.
 
 Benefits:
 
* It's just as easy as before to allocate global refs (and global 
 mutable arrays).
* It's still possible to perform arbitrary IO actions (e.g. FFI 
 calls), but you have to wrap them in unsafeIOToST -- a good thing since 
 they really are unsafe. unsafeIOToST is much safer than unsafePerformIO 
 when used in this way.
 
 Problems:
 
* stToIO (newSTRef 'x') doesn't have type IO (IORef Char).
 
 This problem can be solved by adopting a reform that I've wanted for a 
 long time anyway: make IO, IORef, etc. aliases for (ST RealWorld), 
 (STRef RealWorld), etc. instead of completely different types. Then 
 stToIO is the identity function and we only need a single set of 
 state-thread functions instead of the parallel IO and ST equivalents 
 that we have currently.

It definitely sounds nice, but is it actually possible to
generalize e.g. MVar from RealWorld to forall s or are we
always going to have to say:

v - unsafeIOToST (newMVar / newChan ... )

GHC's definition:
data MVar a = MVar (MVar# RealWorld a)


-- 
Nobody can be exactly like me. Even I have trouble doing it.
___
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell


Re: Module Initialisation? (was Re: [Haskell] (no subject))

2004-10-17 Thread Ben Rudiak-Gould
Remi Turk wrote:
It definitely sounds nice, but is it actually possible to generalize e.g. MVar from RealWorld 
to forall s or are we always going to have to say:
v - unsafeIOToST (newMVar / newChan ... )
 

I hadn't thought of that, but I don't think there's any problem with
   type MVar = STMVar RealWorld
   newMVar  :: a - ST s (STMVar s a)
   withMVar :: STMVar s a - (a - ST s b) - ST s b
   ...
For that matter it seems like we could (should?) have
   forkST :: ST s () - ST s (STThreadId s)
   forkIO = forkST
and so on.
-- Ben
___
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell


Re: Module Initialisation? (was Re: [Haskell] (no subject))

2004-10-17 Thread Remi Turk
On Sun, Oct 17, 2004 at 05:11:02PM +0100, Ben Rudiak-Gould wrote:
 Remi Turk wrote:
 
 It definitely sounds nice, but is it actually possible to generalize e.g. 
 MVar from RealWorld to forall s or are we always going to have to say:
 
 v - unsafeIOToST (newMVar / newChan ... )
  
 
 I hadn't thought of that, but I don't think there's any problem with
 
type MVar = STMVar RealWorld
 
newMVar  :: a - ST s (STMVar s a)
withMVar :: STMVar s a - (a - ST s b) - ST s b
...
 
 For that matter it seems like we could (should?) have
 
forkST :: ST s () - ST s (STThreadId s)
forkIO = forkST
 
 and so on.
 
 -- Ben

But what semantics would they have?
It cannot be the normal concurrency as
AFAIK runST is supposed to be deterministic.

Groetjes,
Remi

-- 
Nobody can be exactly like me. Even I have trouble doing it.
___
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell


Re: Module Initialisation? (was Re: [Haskell] (no subject))

2004-10-17 Thread Adrian Hey
On Sunday 17 Oct 2004 4:45 am, Wolfgang Thaller wrote:
 Adrian Hey wrote:
  I'm puzzled about this idea of module init action in a declarative
  language. Perhaps, if it's desirable to have some module initialisation
  applied to a module if anything from it is used, the way to do this
  would
  be to have a reserved identifier specially for the purpose, like
  main, but at the module level. (Though this idea still seems a
  bit strange to me).

 I don't see what's so strange about that.

What's strange about it IMHO is that at the moment the mere presence of
some definition in a module has no effect on actual programs. What counts
is whether or not defined thing is actually connected to the top
level main via some chain of explicit (I.E. named) dependency. This
is a property I would like to preserve. If I've understood the proposal
correctly, we'd lose this.

 At least, it's not any
 stranger than on-demand execution of IO actions in a pure functional
 language. And the toplevel - is definitely a natural syntax for
 that.

True, but maybe this isn't neccessary, and even if it is, performing the
IO creation acts only if the created thing is actually used by a
program still seems the lesser of two evils to me. Of course used
could mean one of at least two different things..
 1- The compiler does some kind of dependency analysis and mops up
all referenced things which must be created into some kind of
pre-main action.
 2- Things which must be created are just compiled into some kind of
thunk which gets reduced (post-main), if and when it is actually
required by a running program.

Option 1 seems like quite a difficult thing to implement, but does
have the advantage that well defined semantics could be given to
arbitrary IO operations. It also has the disadvantage that a some
of these may be redundant (just because something is referenced
doesn't imply that is will actually be used in any given program
run).

Option 2 seems easier to implement and is nice and lazy, but
suffers from semantic ambiguity if arbitrary IO operations
are allowed (encouraged). But do we need to do this? I'm
begining think maybe we don't. The only reason it seems like
we do is because currently the only way of creating IORefs
and wotnot is via the IO monad, but this need not be so IMO.

 You're taking away a feature I want to use.

Sorry, I didn't mean to deprive you of something you would find useful.
But maybe it should be considered as a separate issue. It's not clear to
me how the compiler (or Joe programmer for that matter) would determine
and/or control which modules initialisation actions would be executed or
not, if there's no obvious connection to the top level main.

 1) Initialising global IORefs is a good thing, no matter when it's
 actually done.

Yes, the hypothetical SafeIO monad allows you to do this (what you can't
do is read or write IORefs).

 2) Being able to initialize things at program startup is a good thing,
 even if they're not explicitly referred to.

Well here is where we disagree I think. Not that I think this is a bad
thing as such, but the rules that determine which modules init actions
do or don't get invoked seem quite unclear to me if there's no requirement
that they are referenced from main, directly or indirectly.

But maybe you could clarify what you have in mind?

Regards
--
Adrian Hey

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


Re: Module Initialisation? (was Re: [Haskell] (no subject))

2004-10-17 Thread Ben Rudiak-Gould
Remi Turk wrote:
 On Sun, Oct 17, 2004 at 05:11:02PM +0100, Ben Rudiak-Gould wrote:
 I don't think there's any problem with

 type MVar = STMVar RealWorld

 newMVar :: a - ST s (STMVar s a)
 withMVar :: STMVar s a - (a - ST s b) - ST s b ...

 For that matter it seems like we could (should?) have

 forkST :: ST s () - ST s (STThreadId s) forkIO = forkST
 But what semantics would they have? It cannot be the normal
 concurrency as AFAIK runST is supposed to be deterministic.
Okay, so I'm being silly. Forget forkST then. But STMVar is still okay, 
isn't it? The only MVars you could use in a state thread would be those 
you'd created in the same state thread, and without forkST they can't be 
accessed in a nondeterministic way. Their presence is pointless, true, 
but at least not unsafe.

It does seem a bit of a hack, but it still seems preferable to the other 
alternatives currently on the table (namely unrestricted IO, a new 
SafeIO, or unsafeIOToST.newMVar).

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


Re: Module Initialisation? (was Re: [Haskell] (no subject))

2004-10-17 Thread Remi Turk
On Sun, Oct 17, 2004 at 07:20:28PM +0100, Ben Rudiak-Gould wrote:
 Remi Turk wrote:
 
  On Sun, Oct 17, 2004 at 05:11:02PM +0100, Ben Rudiak-Gould wrote:
 
  I don't think there's any problem with
 
  type MVar = STMVar RealWorld
 
  newMVar :: a - ST s (STMVar s a)
  withMVar :: STMVar s a - (a - ST s b) - ST s b ...
 
  For that matter it seems like we could (should?) have
 
  forkST :: ST s () - ST s (STThreadId s) forkIO = forkST
 
  But what semantics would they have? It cannot be the normal
  concurrency as AFAIK runST is supposed to be deterministic.
 
 Okay, so I'm being silly. Forget forkST then. But STMVar is still okay, 
 isn't it? The only MVars you could use in a state thread would be those 

I won't ever remind you of your being silly if you tell me about
the current state of your implicit-(parameter|return)-IO story ;)

STMVar does indeed still seem okay, except that I have no idea if
it actually makes any sense outside of IO.
(That is: newSTMVar x = unsafeIOToST (newMVar x) seems a bit
pointless and might be the actual way it needs to be implemented.
Has a vague feeling of being silly too now...)

By the way, I'm still in favour of `type IO a = ST RealWorld a':
It just seems wrong to either let's just make it IO or having
to sprinkle stToIO's around...

 you'd created in the same state thread, and without forkST they can't be 
 accessed in a nondeterministic way. Their presence is pointless, true, 
 but at least not unsafe.
 
 It does seem a bit of a hack, but it still seems preferable to the other 
 alternatives currently on the table (namely unrestricted IO, a new 
 SafeIO, or unsafeIOToST.newMVar).
 
 -- Ben

I'm waiting to be convinced either way ;)

Groetjes,
Remi

-- 
Nobody can be exactly like me. Even I have trouble doing it.
___
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell


Re: Module Initialisation? (was Re: [Haskell] (no subject))

2004-10-16 Thread Wolfgang Thaller
Adrian Hey wrote:
I'm puzzled about this idea of module init action in a declarative
language. Perhaps, if it's desirable to have some module initialisation
applied to a module if anything from it is used, the way to do this 
would
be to have a reserved identifier specially for the purpose, like
main, but at the module level. (Though this idea still seems a
bit strange to me).
I don't see what's so strange about that. At least, it's not any 
stranger than on-demand execution of IO actions in a pure functional 
language. And the toplevel - is definitely a natural syntax for 
that.

I've interpreted this correctly this means that someAction will always
get executed, whether or not foo (or anything dependent on foo) is used
elsewhere? This seems like a bad thing to me.
It's a feature. I'd actually _want_ to use that one independently.
It may be harmless enough
if all it does is create a few IORefs which are then promptly garbage
collected, but in some situations it could involve quite complex
and expensive initialisation operations on foreign libraries
(for example).
Well if you want those IO operations to be lazily interleaved with the 
rest of the program (or not executed at all), you can use

valueToBeInitedLazily - unsafeInterleaveIO $ do
blah
... which explicitly says what you are doing that might be slightly 
unsafe.

Since a lot of the concerns expressed about this seem to centre
around possible abuse of arbitrary IO operations in these top
level constructions, maybe the problem could be addressed by
insisting that a restricted monad was used, call it SafeIO say.
You're taking away a feature I want to use.
1) Initialising global IORefs is a good thing, no matter when it's 
actually done.
2) Being able to initialize things at program startup is a good thing, 
even if they're
not explicitly referred to.
3) Lazy, on-demand initialization of things is a good thing, if you 
know what you're doing.
4) Lazy, on-demand initialization of things (with potential side 
effects) is a bad thing, if you don't know what you're doing.

If we define toplevel IO bindings to be just like the unsafePerformIO 
hack, we get 1,3 and 4 (and 4 is actually a bad thing).
If we define toplevel IO bindings as mdo-style module initialisation, 
we get 1 and 2 directly, and 3 with an obvious use of 
unsafeInterleaveIO. We don't get 4, because obviously, when you use 
unsafeInterleaveIO, you're already claiming to know what you're doing.

Also note that if useless initialization of IORefs ever becomes a 
problem, we can still use lots of nasty hacks inside the compiler to 
optimize for those common functions. But I don't think we'll ever have 
to do this.

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


Module Initialisation? (was Re: [Haskell] (no subject))

2004-10-14 Thread Adrian Hey
On Thursday 14 Oct 2004 10:18 am, Simon Marlow wrote:
 On 13 October 2004 16:17, Wolfgang Thaller wrote:
  We could get away with desugaring them to some very unsafe non-IO-
  bindings and having the module init action do something evil to
  make the IO happen in the right order... should be possible to make
  that look exactly like mdo from the outside.
  We'll end up using the unsafePerformIO hack inside the implementation
  again, so that people end up with two IORefs instead of one, but that
  should be cheap enough:
 
  foo - someAction
 
  ... could be transformed into ...
 
  foo_var = unsafePerformIO $ newIORef (throw NonTermination)
  foo_action = someAction = writeIORef foo_var
  foo = unsafePerformIO $ readIORef foo
 
  ... with the appropriate NOINLINEs.
  The module init action would then make sure that foo_action gets
  invoked.

 Yes, we could do that.  The fact that we're using NOCSE/NOINLINE
 internally still seems very fragile, though.  Oh well, perhaps we have
 to live with that if we don't want the pain of a special binding type
 throughout the compiler.

I'm puzzled about this idea of module init action in a declarative
language. Perhaps, if it's desirable to have some module initialisation
applied to a module if anything from it is used, the way to do this would
be to have a reserved identifier specially for the purpose, like
main, but at the module level. (Though this idea still seems a
bit strange to me).

Also, I'm still not convinced that mdo is something I want emulated
anyway, (well not if it means doing something like the above). If
I've interpreted this correctly this means that someAction will always
get executed, whether or not foo (or anything dependent on foo) is used
elsewhere? This seems like a bad thing to me. It may be harmless enough
if all it does is create a few IORefs which are then promptly garbage
collected, but in some situations it could involve quite complex
and expensive initialisation operations on foreign libraries
(for example).

Since a lot of the concerns expressed about this seem to centre
around possible abuse of arbitrary IO operations in these top
level constructions, maybe the problem could be addressed by
insisting that a restricted monad was used, call it SafeIO say.

So we'd have something like this:
initIORef :: a - SafeIO (IORef a)
initMVar  :: a - SafeIO (MVar a)
initEmptyMVar :: SafeIO (MVar a)
liftSafeIO:: SafeIO a - IO a

The idea being that from within SafeIO you couldn't read or modify IORefs
or do any other IO operation, all you could do is create new ones (or
incorporate existing ones into the data structure). Wouldn't this + mdo
suffice for the safe construction and initialisation of complex mutable data
structures (which is probably all people want most of the time)?

I guess you'd still need a get out occasionally, especially for FFI..
flakyLiftIO :: IO a - SafeIO a
:-)

So at the top level you'd probably have..

myThing :: Thing
myThing - safeNewThing

safeNewThing :: SafeIO Thing
safeNewThing = mdo ...

newThing :: IO Thing
newThing = liftSafeIO safeNewThing

Now that all seems so simple, I'm certain I must have overlooked
something :-(

Regards
--
Adrian Hey

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


[Haskell] (no subject)

2004-10-13 Thread Wolfgang Thaller
 b) Some predetermined order, with semantics like mdo:

Hmm, I just realized that this also means we can execute moduke 
intialisation code that returns no result using:
_ - do ...

I like that, I desperately need that for my Objective-C binding...
So the extension with the specified order actually allows one to do more 
things than the unsafePerformIO hack. I wouldn't care about specifying the 
order otherwise. If the default order is wrong, people can still use 
unsafeInterleaveIO.

 GHC already has an initialisation procedure for each module in the
 program which could be adapted to run the initialisation-time IO
 actions, with a little effort.

Hmm, doesn't the initialisation procedure run before the Stg machine is 
properly set up? I guess all the GHC init code could do is to register IO 
actions to be executed later (but before main is run). We probably want 
all the GHC module init procedures to be run before we execute any IO 
actions.

 I'm more worried about what other changes we have to make to the
 compiler: if we can avoid having to flag top-level bindings as
 monadic/non-monadic all the way through the compiler, then we could
 avoid a pervasive change to the compiler.  At the moment I can't see an 
 obvious way to do that.

We could get away with desugaring them to some very unsafe non-IO-
bindings and having the module init action do something evil to make the 
IO happen in the right order... should be possible to make that look 
exactly like mdo from the outside.
We'll end up using the unsafePerformIO hack inside the implementation 
again, so that people end up with two IORefs instead of one, but that 
should be cheap enough:

foo - someAction

... could be transformed into ...

foo_var = unsafePerformIO $ newIORef (throw NonTermination)
foo_action = someAction = writeIORef foo_var
foo = unsafePerformIO $ readIORef foo

... with the appropriate NOINLINEs.
The module init action would then make sure that foo_action gets invoked.

So we'd only need to annotate modules with a list of init actions and 
extend the RTS appropriately for that...


Cheers,

Wolfgang

-- 
GMX ProMail mit bestem Virenschutz http://www.gmx.net/de/go/mail
+++ Empfehlung der Redaktion +++ Internet Professionell 10/04 +++

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


[Haskell] (no subject)

2004-06-22 Thread Alfonso








Hello dear haskellers:



My name is Alfonso Meléndez I work in Computer
Science in  a Colombian
 University.

Right now, I am developing an application for
discrete mathematics and I need to comunicate Java with Haskell, 

more precisely  I use Java for the interface of the
application and from here  I need to call several  Haskell Functions.

In Haskell.org  there are two libraries  ( Java Bridge
and JNI) that communicate Haskell with Java (but not viceversa).



Is there and easy and direct way to do this job?



Thank you!!!



 



Alfonso  Meléndez

Dirección de Proyectos

Facultad de Ingeniería de Sistemas

Escuela Col de Ingeniería

Tels: 676266,6763888, Ext: 224,  371 

Cel:  (315) 8938216







This e-mail message has been scanned for Viruses and Content and cleared by 
NetIQ MailMarshal 




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