[Haskell-cafe] ANN: The Monad.Reader - Issue 14

2009-07-29 Thread Wouter Swierstra

Dear all,

I am pleased to announce that a new issue of The Monad.Reader is now  
available:


 http://themonadreader.wordpress.com/

Issue 14 consists of the following three articles:

 * Fun with Morse Code
 by Heinrich Apfelmus

 * Hieroglyph 2: Purely Functional Information Graphics Revisited
 by Jefferson Heard

 * Lloyd Allison’s Corecursive Queues: Why Continuations Matter
 by Leon P Smith

Please note that I've moved the Monad.Reader to a new Wordpress blog.  
You may want to update your bookmarks.


If you’d like to write something for the next issue of The  
Monad.Reader, please get in touch. I haven’t fixed the deadline for  
the next issue just yet, but expect a deadline late 2009.


 Wouter

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


[Haskell-cafe] Re: Need feedback on my Haskell code

2009-07-29 Thread Jon Fairbairn
CK Kashyap ck_kash...@yahoo.com writes:

 line' (x1, y1) (x2, y2) deltax deltay ystep isSteep error
   | x1 == x2 = if isSteep then [(y1, x1)] else [(x1, y1)]
   | isSteep =
 (y1, x1) :
   line' (newX, newY) (x2, y2) deltax deltay ystep isSteep newError
   | otherwise =
 (x1, y1) :
   line' (newX, newY) (x2, y2) deltax deltay ystep isSteep newError
   where newX = x1 + 1
 tempError = error + deltay
 (newY, newError)
   = if (2 * tempError) = deltax then
   (y1 + ystep, tempError - deltax) else (y1, tempError)

It's early in my day, so I'm not very awake, but this looks like it
could be an iterate or something like that, rather than explicit
recursion.

-- 
Jón Fairbairn jon.fairba...@cl.cam.ac.uk


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


[Haskell-cafe] Re: Adding a field to a data record

2009-07-29 Thread Jon Fairbairn
Henry Laxen nadine.and.he...@pobox.com writes:

 It seems to me this should be easy, but I can't quite figure out
 how to do it without a lot of typing.  Here is the question:

 Suppose you have a data type like:
 Data Foo = Foo { a :: Int, b :: Int, 
... many other fields ... 
  y :: Int } deriving (Eq, Read, Show, Typeable, Data)

 Now I would like to add a field z :: Int to the end of Foo.  If
 I have a ton of data out on disk, which I wrote with, say
 writeFile a.data (show foo) -- where foo is a [Foo] say 1000
 long, I would like to get a new a.data file which has a new
 z::Int field.

One approach to this would be to temporarily redefine Foo

data Foo = Foo { a :: Int, b :: Int, 
... many other fields ... 
y :: Int } deriving (Eq, Read, Show, Typeable, Data)
 | NuFu {a :: Int, b :: Int,
... many other fields ... 
y :: Int,
z :: Int} deriving (Eq, Read, Show, Typeable, Data)

read the file, map Foo to NuFoo + whatever the initial value of z is
and write it out again.

-- 
Jón Fairbairn jon.fairba...@cl.cam.ac.uk

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


Re: [Haskell-cafe] Adding a field to a data record

2009-07-29 Thread José Pedro Magalhães
Hello Henry,

The paper A Lightweight Approach To Datatype-Generic Rewriting [1]
describes a way to generically add a constructor to any regular datatype
using type-indexed datatypes [2]. A similar technique could be used to add a
new field to each constructor. Then you get something like:

data Foo
 type Extended f = ...


|Extended Foo| represents your |Foo| datatype with an added |z| field of
type |Int|. Since the underlying generic programming library used (regular
[3]) has Template Haskell generation, you don't even have to write the
generic representations for your many datatypes.

(As far as I know, SYB does not mix with type-indexed datatypes.)


Cheers,
Pedro

[1] Thomas van Noort, Alexey Rodriguez, Stefan Holdermans, Johan Jeuring,
Bastiaan Heeren. A Lightweight Approach to Datatype-Generic Rewriting.
Submitted to the Workshop on Generic Programming 2008.
http://www.cs.uu.nl/wiki/bin/view/Alexey/ALightweightApproachToDatatype-GenericRewriting
[2] http://www.iai.uni-bonn.de/~ralf/publications/SCP2004.pdf
[3] http://www.cs.uu.nl/wiki/GenericProgramming/Regular

On Tue, Jul 28, 2009 at 16:29, Henry Laxen nadine.and.he...@pobox.comwrote:

 Dear Group,

 It seems to me this should be easy, but I can't quite figure out
 how to do it without a lot of typing.  Here is the question:

 Suppose you have a data type like:
 Data Foo = Foo { a :: Int, b :: Int,
   ... many other fields ...
  y :: Int } deriving (Eq, Read, Show, Typeable, Data)

 Now I would like to add a field z :: Int to the end of Foo.  If
 I have a ton of data out on disk, which I wrote with, say
 writeFile a.data (show foo) -- where foo is a [Foo] say 1000
 long, I would like to get a new a.data file which has a new
 z::Int field.

 So far the only way I can think of is to make a new Data Foo1,
 which includes the z::Int, read in a.data as a list of Foo,
 write a function like:

 fooTofoo1 :: Foo - Foo1
 fooTofoo1 xx = Foo1 {a = a xx, ... y = y xx, z = 1}

 then write the file back out, and perhaps use emacs to
 query-replace all the Foo1's back to Foo's, add the z::Int field
 back into Foo, and read it back.

 Please tell me there is a better way.  Thanks in advance.
 Best wishes,
 Henry Laxen

 PS:
 I have read syb1, and syb2 a couple of times now, but so far
 haven't been able to connect it with this kind of problem.




 ___
 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] Need feedback on my Haskell code

2009-07-29 Thread CK Kashyap
It worked like a charm!!! I'd need more time to get my head around unfoldr
I'd appreciate it very much if you could explain this line  map maySwitch . 
unfoldr go $ (x1,y1,0)
I did not fully understand the $ in that line - I tried putting parenthesis 
in various places to get rid of $ but did not seem to work.

Regards,
Kashyap





From: Chaddaï Fouché chaddai.fou...@gmail.com
To: CK Kashyap ck_kash...@yahoo.com
Cc: haskell-cafe@haskell.org
Sent: Tuesday, July 28, 2009 7:10:38 PM
Subject: Re: [Haskell-cafe] Need feedback on my Haskell code

On Tue, Jul 28, 2009 at 3:04 PM, CK Kashyapck_kash...@yahoo.com wrote:
 Hi Everyone,
 I managed to write up the line drawing function using the following links -
 http://www.cs.helsinki.fi/group/goa/mallinnus/lines/bresenh.html
 http://rosettacode.org/wiki/Bresenham%27s_line_algorithm#Haskell


I tried to simplify your function a little bit :

line :: Point - Point - [Point]
line pa@(xa,ya) pb@(xb,yb) = map maySwitch . unfoldr go $ (x1,y1,0)
  where
steep = abs (yb - ya)  abs (xb - xa)
maySwitch = if steep then (\(x,y) - (y,x)) else id
[(x1,y1),(x2,y2)] = sort [maySwitch pa, maySwitch pb]
deltax = x2 - x1
deltay = abs (y2 - y1)
ystep = if y1  y2 then 1 else -1
go (xTemp, yTemp, error)
| xTemp  x2 = Nothing
| otherwise  = Just ((xTemp, yTemp), (xTemp + 1, newY, newError))
where
  tempError = error + deltay
  (newY, newError) = if (2*tempError) = deltax
 then (yTemp+ystep,tempError-deltax)
 else (yTemp,tempError)

I think it will be a bit better, tell me what you think ?

-- 
Jedaï



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


Re: [Haskell-cafe] Re: Adding a field to a data record

2009-07-29 Thread Lennart Augustsson
With the RecordWildCard extension you should be able to write

newFoo Old.Foo{..} = New.Foo { .., z=1 }



On Tue, Jul 28, 2009 at 3:47 PM, Henry Laxennadine.and.he...@pobox.com wrote:
 Malcolm Wallace Malcolm.Wallace at cs.york.ac.uk writes:


  and perhaps use emacs to
  query-replace all the Foo1's back to Foo's

 At least this bit can be avoided easily enough, by using
 module qualification during the conversion process.

      module Original (Foo(..)) where
      data Foo = Foo { ... y :: Int } deriving ...

      module New (Foo(..)) where
      data Foo = Foo { ... y, z :: Int } deriving ...

      module Convert where
      import Original as Old
      import New as New
      newFoo :: Old.Foo - New.Foo
      newFoo old{..} = New.Foo { a=a, b=b, ... z=1 }

 Finally rename module New.

 Regards,
      Malcolm


 Thanks Malcolm, yes, that keeps me out of emacs, but the part I would really
 like to avoid is writing the New.Foo { a=a, b=b, ... z=1 } part, where the 
 field
 names are many, long, and varied.  Yes, I could cut and paste, but I'm hoping
 for a better way.  Thanks.
 Best wishes,
 Henry Laxen


 ___
 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] Proposal: TypeDirectedNameResolution

2009-07-29 Thread Ben Lippmeier


On 28/07/2009, at 6:41 AM, John Dorsey wrote:

I'm assuming that name resolution is currently independent of type
inference, and will happen before type inference.  With the proposal  
this is
no longer true, and in general some partial type inference will have  
to

happen before conflicting unqualified names are resolved.

My worry is that the proposal will require a compliant compiler to
interweave name resolution and type inference iteratively.

To my untrained eye it looks complicated and invasive, even without  
the
mutually recursive case.  Can anyone shed light on whether this  
would be a

problem for, say, GHC?



My experimental compiler DDC [1] implements TDNR almost exactly as  
given on the Haskell' wiki.


Yes, you have to interweave name resolution with type inference,  
because there is no way to compute the binding dependency graph/call  
graph before type inference proper. This is discussed in section 3.5  
of my thesis [2] (which is currently under examination). For DDC I  
used a constraint based inference algorithm to compute the binding  
dependency graph on the fly, but I don't know how easy it would be  
to retrofit this method into GHC.


Cheers,
Ben.


[1] http://www.haskell.org/haskellwiki/DDC
[2] 
http://cs.anu.edu.au/people/Ben.Lippmeier/project/thesis/thesis-lippmeier-sub.pdf




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


Re: [Haskell-cafe] Need feedback on my Haskell code

2009-07-29 Thread Johan Tibell
On Wed, Jul 29, 2009 at 12:04 PM, CK Kashyap ck_kash...@yahoo.com wrote:

 It worked like a charm!!! I'd need more time to get my head around
 unfoldr
 I'd appreciate it very much if you could explain this line  map maySwitch
 . unfoldr go $ (x1,y1,0)
 I did not fully understand the $ in that line - I tried putting
 parenthesis in various places to get rid of $ but did not seem to work.


(map maySwitch . unfoldr go) (x1,y1,0)

should work.

Cheers,

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


Re: [Haskell-cafe] Need feedback on my Haskell code

2009-07-29 Thread david48
On Wed, Jul 29, 2009 at 12:04 PM, CK Kashyapck_kash...@yahoo.com wrote:
 map maySwitch . unfoldr go $ (x1,y1,0)

I'm not an expert and I might say things the wrong way or without the
required rigor, so with this disclaimer here's my explanation :

go calculates a step of the line, given the current coordinates and
the error value
it returns nothing if the line is done.

unfoldr go calculates a list of lines coordinates, keeping calling go,
and stopping when go returns nothing.

maySwitch takes a coordinate, and switches the x and y values
depending on the axis we're following
map maySwitch does the same for the entire list of coordinates.

when you compose the two,
map maySwitch . unfoldr go  is then a function that takes initial
coordinates, makes a list of coordinates and may switch the x's and
y's depending on the axis we're following.


Now (.) takes two functions, namely map maySwitch and unfoldr go. If
you don't write the $, what you actually mean is
(map maySwitch) . ( unfoldr go (x1,y1,0))

this ( unfoldr go (x1,y1,0)) is not of the right type for (.) : it
should take a parameter and return a value, but here it just returns a
value.

so you have to find a way to give (x1,y1,0) to the whole composed
function  map maySwitch . unfoldr go.

the obvious way to do it is by writing:

( map maySwitch . unfoldr go ) (x1,y1,0 )

the $ is just a more readable way to write it : since $ binds with
less priority, in
map maySwitch . unfoldr go $ (x1,y1,0)
what's on the right of $ will be applied to what's on the left

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


[Haskell-cafe] RFC: Unicode support in Alex

2009-07-29 Thread Jean-Philippe Bernardy
Hello,

I have modified the Alex lexer generator to support unicode. 

The general idea is that the state-machine works on the UTF8
representation of the text. I submit my work here for review
in order to off-load the maintainer (Simon Marlow) as far
as possible.

The prototype is available on github:

git://github.com/jyp/Alex.git

Be sure to 
 * checkout the utf8 branch (so git diff master shows the changes)
 * Do a 2-stage bootstrapping before testing


Caveats:
 * The generated code depends on some utf8 packages;
 * There is no attempt to fix the bytestring-based wrappers;
 * Left-context recognition is not table-based any more;
 * Presence of debug code.

Bug reports, comments, and especially patches are welcome :)

Thanks,
-- JP

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


[Haskell-cafe] Re: Re: Proposal: TypeDirectedNameResolution

2009-07-29 Thread Johannes Waldmann
While the discussion centers around overload resolution
let me re-iterate a point that (e.g.,) Java does nicely:

for their x.f, if x :: T, then  you write  .f  (unqualified)
instead of  .T.f (qualified), even if you needed qualification
to declare the type of x, as in foo.bar.T x;

This requires a mixture of type checking (for x)
and name resolution (for f), which probably wouldn't fit
with Haskell's current module and type system. Too bad ...

Best - Johannes.



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


[Haskell-cafe] [Haskell Cafe] Data construction: how to avoid boilerplate code?

2009-07-29 Thread Paul Sujkov
Hi haskellers,

I have a datatype of this sort:

data Type = Status
  | Message
  | Warning
  | Error
  | StepIn
  | StepOut deriving (Eq, Show)

and (at this moment) two fabric-like functions:

makeType :: String - Type
makeType c = case c of
   -$-   - Status
   -M-   - Message
   -W-   - Warning
   -E-   - Error
   -   - StepIn
   -   - StepOut
   otherwise   - error Uknown Message Type

deduceType :: Integer - Type
deduceType n = case n of
 240   - Status
 64- Message
 32- Warning
 8 - StepOut
 4 - StepIn
 2 - Error
 otherwise - error Unknown Message Type

how can I avoid boilerplate code at this stage? The thing that I really need
is some n-type constructor, kind of a fabric for a variety of types with the
possibility to add them on the fly (I have simple Integer and String here,
but they could be much more sophisticated). I don't need the possibility to
unpack the original value (e.g. -$- or 240) once the Type is created - in
this case I can always have some sort of mapping to deduce it at any moment,
so it will be redundant to carry it through the code explicitly

The example is rather short and simple, but I have some more places in code,
where the same problem is observed. Is there any generic solution? Thanks in
advance

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


[Haskell-cafe] Re: [Haskell] ANNOUNCE: OpenGL 2.3.0.0

2009-07-29 Thread Felipe Lessa
On Wed, Jul 29, 2009 at 06:26:30PM +0200, Sven Panne wrote:
 Apart from that, a bug in vertexAttribPointer has been fixed.

...and the new ObjectName, StateVar and Tensor packages are being
used, and this is great!  Thanks for the release.

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


Re: [Haskell-cafe] [Haskell Cafe] Data construction: how to avoid boilerplate code?

2009-07-29 Thread Luke Palmer
On Wed, Jul 29, 2009 at 6:27 AM, Paul Sujkovpsuj...@gmail.com wrote:
 Hi haskellers,

 I have a datatype of this sort:

 data Type = Status
   | Message
   | Warning
   | Error
   | StepIn
   | StepOut deriving (Eq, Show)

 and (at this moment) two fabric-like functions:

 makeType :: String - Type
 makeType c = case c of
    -$-   - Status
    -M-   - Message
    -W-   - Warning
    -E-   - Error
    -   - StepIn
    -   - StepOut
    otherwise   - error Uknown Message Type

 deduceType :: Integer - Type
 deduceType n = case n of
  240   - Status
  64    - Message
  32    - Warning
  8 - StepOut
  4 - StepIn
  2 - Error
  otherwise - error Unknown Message Type

 how can I avoid boilerplate code at this stage? The thing that I really need
 is some n-type constructor, kind of a fabric for a variety of types with the
 possibility to add them on the fly (I have simple Integer and String here,
 but they could be much more sophisticated). I don't need the possibility to
 unpack the original value (e.g. -$- or 240) once the Type is created - in
 this case I can always have some sort of mapping to deduce it at any moment,
 so it will be redundant to carry it through the code explicitly

I am not sure what you're asking.  Are you saying that what you have
written is boilerplate?  What code are you writing that could be
automatically deduced with enough smartness?

Give an example of what you might like the solution to look like.

Luke

 The example is rather short and simple, but I have some more places in code,
 where the same problem is observed. Is there any generic solution? Thanks in
 advance

 --
 Regards, Paul Sujkov

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


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


Re: [Haskell-cafe] [Haskell Cafe] Data construction: how to avoid boilerplate code?

2009-07-29 Thread Luke Palmer
On Wed, Jul 29, 2009 at 10:15 AM, Paul Sujkovpsuj...@gmail.com wrote:
 Hi Luke,

 I'm not pretty sure. The thing I don't like is the need to copy-and-paste
 all the code with enumeration constructors. So, now I have two types to make
 Type data from, but they could be many, so I'll have many almost identical
 makeTypeFromFoo-functions. The thing I need is something like (*):

 makeType :: ? - Type
 makeType c = case c of
    (-$- or 240)   - Status
    (-M- or 64)   - Message
    (-W- or 32)   - Warning

Well, you could write a helper like this:

matchType :: (Eq a) = (a,a,a) - a - Type
matchType (status,message,warning) x
| x == status = Status
| x == message = Message
| x == warning = Warning

To reduce the size of your specifications:

makeTypeStr = matchType (-$-, -M-, -W-)
makeTypeInt = matchType (240, 64, 32)

There are trade-offs to doing something like this.  It's smaller, but
harder to read as specification.  But, because it uses a tuple, it
will catch you if you add a new case but forget to add it to one of
the makeType*s (providing you remember to change matchType).

What you're asking for puts all the conversions in the same place,
which forbids them from being split out, decoupled, and modularlized.
What if, instead of simple values, you had a more involved parser for
these things?

Even though it's kind of verbose, I think what you already have is
fine.  You do have to repeat the names, but it is still content code,
and the relationship of the content to the names is explicit.  You
might find tables like this in a user's manual for your software...

Luke


 then I have all this fabric code in one place. I could use something like
 Either for this example, but it will scale fine up to two types to build
 value from; while I want to have arbitrary numbers of them

 And from another point, it would be great if I could avoid doubling the code
 for datatype declaration with empty (no parameter) constructors, and actual
 constructing code from the different types. So it could look somewhat
 alike this (pseudo-code) (**):

 data Type = Status -- (String -$-, Integer 240)
   | Message -- (String -M-, Integer 64)
   | Warning -- (String -W-, Integer 32)

 however, I'm not sure this one is really needed. Something for the (*) is
 much more interesting

 2009/7/29 Luke Palmer lrpal...@gmail.com

 On Wed, Jul 29, 2009 at 6:27 AM, Paul Sujkovpsuj...@gmail.com wrote:
  Hi haskellers,
 
  I have a datatype of this sort:
 
  data Type = Status
    | Message
    | Warning
    | Error
    | StepIn
    | StepOut deriving (Eq, Show)
 
  and (at this moment) two fabric-like functions:
 
  makeType :: String - Type
  makeType c = case c of
     -$-   - Status
     -M-   - Message
     -W-   - Warning
     -E-   - Error
     -   - StepIn
     -   - StepOut
     otherwise   - error Uknown Message Type
 
  deduceType :: Integer - Type
  deduceType n = case n of
   240   - Status
   64    - Message
   32    - Warning
   8 - StepOut
   4 - StepIn
   2 - Error
   otherwise - error Unknown Message Type
 
  how can I avoid boilerplate code at this stage? The thing that I really
  need
  is some n-type constructor, kind of a fabric for a variety of types with
  the
  possibility to add them on the fly (I have simple Integer and String
  here,
  but they could be much more sophisticated). I don't need the possibility
  to
  unpack the original value (e.g. -$- or 240) once the Type is created -
  in
  this case I can always have some sort of mapping to deduce it at any
  moment,
  so it will be redundant to carry it through the code explicitly

 I am not sure what you're asking.  Are you saying that what you have
 written is boilerplate?  What code are you writing that could be
 automatically deduced with enough smartness?

 Give an example of what you might like the solution to look like.

 Luke

  The example is rather short and simple, but I have some more places in
  code,
  where the same problem is observed. Is there any generic solution?
  Thanks in
  advance
 
  --
  Regards, Paul Sujkov
 
  ___
  Haskell-Cafe mailing list
  Haskell-Cafe@haskell.org
  http://www.haskell.org/mailman/listinfo/haskell-cafe
 
 



 --
 Regards, Paul Sujkov

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


Re: [Haskell-cafe] Re: cabal: : openFile: does not exist (No such file or directory)

2009-07-29 Thread Job Vranish
lol, yep you're right. I'd assumed the haskell platform shipped with the
latest parsec, when in fact it does not :) my bad...

However, I fixed the cabal issue by installing ghc 6.10.3 and rebuilding the
haskell platform. Apparently there is either a compiler issue or
incompatibility with 6.10.4 that causes the cabal: : openFile: does not
exist (No such file or directory) error.

- Job

On Tue, Jul 28, 2009 at 10:44 AM, Thomas Hartman tphya...@gmail.com wrote:

 did you verify parsec-2.1.0.1 exports

 Text.Parsec.Language

 ?

 This might be a parsec 2 versus parsec 3 issue

 ghc-pkg describe parsec-2.1.0.1

 should tell you the answer to that.



 2009/7/27 Job Vranish jvran...@gmail.com:
  I tried updating to ghc-6.10.4 and have exactly the same error.
  Also ghc doesn't seem to be able to find any of the haskell platform
  packages, even though it ghc-pkg finds them just fine.
 
  For example (trimmed for brevity):
 
  ghc-pkg list
  /usr/local/lib/ghc-6.10.4/./package.conf:
  Cabal-1.6.0.3,
  ...
  parsec-2.1.0.1, pretty-1.0.1.0, process-1.0.1.1, random-1.0.0.1,
  ...
 
  ghci -v readModel.hs
  GHCi, version 6.10.4: http://www.haskell.org/ghc/  :? for help
  Glasgow Haskell Compiler, Version 6.10.4, for Haskell 98, stage 2 booted
 by
  GHC version 6.8.2
  Using package config file: /usr/local/lib/ghc-6.10.4/./package.conf
  ...
 
  readModel.hs:9:7:
  Could not find module `Text.Parsec.Language':
locations searched:
  Text/Parsec/Language.hs
  Text/Parsec/Language.lhs
  Failed, modules loaded: none.
  ...
 
 
  ghc-pkg finds parsec, but ghci can't find it.
 
  And if I do a cabal -v3 update I get a:
  cabal: 3: openFile: does not exist (No such file or directory)
 
  Anybody figured it out?
 
  - Job Vranish
 
  On Fri, Jul 17, 2009 at 11:17 AM, Thomas Hartman tphya...@gmail.com
 wrote:
 
  cabal -v3 update
 
  will give you a more verbose version of what is going wrong.
 
  cabal --help
 
  regrettably, cabal --help doesn't tell you this but there is always
  the man page I suppose.
 
  2009/7/16 Tony Hannan tonyhann...@gmail.com:
   Hello,
  
   I'm on Ubuntu 8.10.
   I installed ghc 6.10.4 (from binary package:
   ghc-6.10.4-i386-unknown-linux-n.tar.bz2).
   I installed haskell-platform-2009.2.0.1 (from source package:
   haskell-platform-2009.2.0.1.tar.gz). It contains cabal-install-0.6.2.
  
   Then when I run cabal update, I get the following error:
   cabal:  : openFile: does not exist (No such file or directory)
  
   Any ideas?
  
   Thanks,
   Tony
  
   ___
   Libraries mailing list
   librar...@haskell.org
   http://www.haskell.org/mailman/listinfo/libraries
  
  
  ___
  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] Re: [Haskell] ANNOUNCE: OpenGL 2.3.0.0

2009-07-29 Thread Rafael Gustavo da Cunha Pereira Pinto
Just a heads up:

I did a cabal install Tensor on my Ubuntu box, and got the following
message:

src/Data/Tensor.hs:333:18: Not in scope: `mapAccumL'

I will investigate a little more and let you know.



On Wed, Jul 29, 2009 at 13:55, Felipe Lessa felipe.le...@gmail.com wrote:

 On Wed, Jul 29, 2009 at 06:26:30PM +0200, Sven Panne wrote:
  Apart from that, a bug in vertexAttribPointer has been fixed.

 ...and the new ObjectName, StateVar and Tensor packages are being
 used, and this is great!  Thanks for the release.

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

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


Re: [Haskell-cafe] Re: [Haskell] ANNOUNCE: OpenGL 2.3.0.0

2009-07-29 Thread Rafael Gustavo da Cunha Pereira Pinto
That was quick!

mapAccumL was added to Data.Traversable in package base-4. GHC 6.8.2 uses
base-3...

I think I will be forced to upgrade my GHC by hand... I just can't stand
6.8.2 anymore...



On Wed, Jul 29, 2009 at 22:17, Rafael Gustavo da Cunha Pereira Pinto 
rafaelgcpp.li...@gmail.com wrote:

 Just a heads up:

 I did a cabal install Tensor on my Ubuntu box, and got the following
 message:

 src/Data/Tensor.hs:333:18: Not in scope: `mapAccumL'

 I will investigate a little more and let you know.





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


Re: [Haskell-cafe] Re: [Haskell] ANNOUNCE: OpenGL 2.3.0.0

2009-07-29 Thread Felipe Lessa
On Wed, Jul 29, 2009 at 10:24:23PM -0300, Rafael Gustavo da Cunha Pereira Pinto 
wrote:
 mapAccumL was added to Data.Traversable in package base-4. GHC 6.8.2 uses
 base-3...

But this means that Tensor's dependencies should be on base = 4, not 3.

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