[Haskell-cafe] ANN: The Monad.Reader - Issue 14
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
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
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
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
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
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
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
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
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
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
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?
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
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?
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?
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)
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
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
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
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