before mentioning it on the list? Has someone else
already patented it?
--
David Roundy
Department of Physics
Oregon State University
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
:
Or possibly more generally copy-on-write, which requires one more level
of indirection (handle instead of ptr). Since you are talking about
using ForeignPtr, this is already within your power to prototype, I
should think.
Dan
Dan Piponi wrote:
On 3/8/07, David Roundy [EMAIL PROTECTED] wrote
On Thu, Mar 08, 2007 at 02:50:51PM -0500, Brandon S. Allbery KF8NH wrote:
On Mar 8, 2007, at 14:21 , David Roundy wrote:
I'm thinking you're missing the point. The point is to copy without
writing, and that requires some knowledge (whether static or
runtime) of
whether anyone else has
to update only a very small subset of an array, so I'm not really
sure what DiffArrays are intended to be used for. Once you've updated all
(or most of) the elements, DiffArrays are as slow as their back end, and
you may as well just use their back end without the DiffArray business.
--
David
, change their pointers to it,
then disown the pointer it returns to you.
This is copying without writing (unnecessarily). Or am I missing something?
Dan
David Roundy wrote:
I'm thinking you're missing the point. The point is to copy without
writing, and that requires some knowledge
On Thu, Mar 08, 2007 at 04:32:01PM -0500, Brandon S. Allbery KF8NH wrote:
On Mar 8, 2007, at 16:27 , David Roundy wrote:
The real issue for me is that DiffArrays only make any sense at all if
you often update a subset of your array, which I never expect to do...
so even if they were
On Thu, Mar 08, 2007 at 11:09:35PM +0100, Matthias Neubauer wrote:
David Roundy [EMAIL PROTECTED] writes:
I see. But how would one manage these handles? What's to keep me from
accidentally copying a handle? It sounds like it'd require explicit memory
management, in order to avoid ever
subset of concurrent programming.
Dan
David Roundy wrote:
Ah, I was missing your point, I've heard something called copy-on-write,
which wasn't what you describe (or I also misunderstood it when I heard it
before).
I see. But how would one manage these handles? What's to keep me from
would be far
cleaner...
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
whether ghc is in the path.
--
David Roundy
Department of Physics
Oregon State University
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
array syntax. Manuel is
currently working on parallelization of arrays using this API, so this
would be a good API to use, moving forward.
--
David Roundy
Department of Physics
Oregon State University
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
don't know what you use GSLHaskell for in your
work, but I hope you don't use it for conjugate gradients, or only use it
on easy problems.
--
David Roundy
Department of Physics
Oregon State University
___
Haskell-Cafe mailing list
Haskell-Cafe
the power of the GADT, a line that will fail
-- at compile time:
t' = tailL t
return c
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell
that you define a stupid class, and is far, far prettier.
--
David Roundy
Department of Physics
Oregon State University
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
expressed using map directly:
rmap fs x = map ($ x) fs
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
...
--
David Roundy
Department of Physics
Oregon State University
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
On Mon, Feb 12, 2007 at 02:25:21PM -0800, Bryan O'Sullivan wrote:
David Roundy wrote:
I'm rather curious (if you're sill interested) how this'll be affected by
the removal of the division from the inner loop. e.g.
go :: Double - Double - Int - IO ()
go !x !y !i
| i
case, I meant code that *uses* Data.Bytestring, which is certainly
purely functional.
--
David Roundy
Department of Physics
Oregon State University
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
, and
there are certainly cases a clean optimized Haskell library should be able
to outperform a clean optimized C++ library (if you can agree with me that
template expressions are dirty), due to the possibility of array fusion.
--
David Roundy
Department of Physics
Oregon State University
declarations for top-level
functions, and it's worth adding them while debugging (to get better error
messages), or for tricky functions where the types aren't obvious. But for
code like this, they just make it harder to read.
--
David Roundy
Department of Physics
Oregon State University
signature.asc
path = (formatCalendarTime defaultTimeLocale %Y%m%d . toUTCTime)
`liftM` getModificationTime path
(although I prefer using fmap instead of liftM)
--
David Roundy
Department of Physics
Oregon State University
___
Haskell-Cafe mailing list
no longer uses a
true LCS (neither does diff), so you might try our LCS substitute.
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
benchmarks. e.g. the famous
specmark log(sqrt(x)) optimization (which is equal to 0.5*log(x), but no
decent programmer would ever write that code, and it's a special case the
compiler shouldn't bother looking for).
--
David Roundy
http://www.darcs.net
.
But of course, the benchmark code should also be clean, since we want to
ensure that our compilers are good enough that we can write useful
beautiful code that is also fast.
Just my $0.02.
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing
On Mon, Dec 18, 2006 at 06:52:41PM -0800, Iavor Diatchki wrote:
Hi David,
I don't think you need functional dependencies or associated
type synonyms to get your example to work. In the past,
I have used the abstraction that you are describing (I call it
an indexed monad and it has a nice
On Tue, Dec 19, 2006 at 10:08:12AM -0500, Jacques Carette wrote:
David Roundy wrote:
The trouble is that your solution doesn't allow you to use do-notation with
the IxMonad. And if you did allow yourself to use do-notation by rebinding
(=), etc, then you wouldn't be able to use ordinary
f = lower $ do lift $ putStr Hello world
lift $ getChar
which seems rather heavy. Can anyone think of syntax-light way to allow my
hypothesized rebound do-notation to also work with ordinary monads?
--
David Roundy
Department of Physics
Oregon State University
On Sun, Dec 17, 2006 at 01:35:49PM -0500, Chung-chieh Shan wrote:
David Roundy [EMAIL PROTECTED] wrote:
class WitnessMonad wm where
(=) :: wm w w' a - (a - wm w' w'' b) - wm w w'' b
() :: wm w w' a - wm w' w'' b - wm w w'' b
return :: a - wm w w' a
fail :: String - wm w
x y = RepositoryMonad x y
...
which would allow me to create a monad in which the actions are limited
according to witness types, such as
applyPatchToWorking :: Patch a b - RepositoryMonad (rec,a) (rec,b) ()
--
David Roundy
http://www.darcs.net
I've now almost got a FD solution to this problem, except that it won't
work, and I don't know why. Of course, it's possible that the AT solution
won't work either (I'm still compiling ghc, should have it in the
morning...), but at least it seems far simpler. My FD solution is below.
My trouble
people
hang out, so you can sit there and be dazzled by their arcane knowledge,
and yet also find help for your more mundane problems. I don't think it
hurts for a newbie to get a mixture of answers, including the simple ones
that benefit them, along with a few to stretch their mind.
--
David Roundy
, these
compilation flags and --make?
You pass +RTS -Ksize to your executable, not when compiling (which would
affect the stack of ghc). :)
--
David Roundy
Department of Physics
Oregon State University
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
it
doesn't seem to have a stack error (although it hasn't completed on my
computer, and uses something like 2G of memory). Perhaps the thunks are
placed on the heap, and only when they are actually evaluated does anything
go onto the stack?
--
David Roundy
Department of Physics
Oregon State University
...
--
David Roundy
Department of Physics
Oregon State University
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
A | ElemB B | ElemC C
Again, it only works for lists containing a fixed set of types.
--
David Roundy
Department of Physics
Oregon State University
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell
, but they do occur together, and where they occur,
programmers must have carefully thought out how they interact.
--
David Roundy
Department of Physics
Oregon State University
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman
)
This also makes it explicit that by golly your function had better return
an infinite list, or we're in trouble.
--
David Roundy
Department of Physics
Oregon State University
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org
= read_animal = run
\end{code}
As you can see, I also modified it so that it'll be a bit smarter about not
saying things like a David Roundy or a elephant.
--
David Roundy
Dept. of Physics
Oregon State University
___
Haskell-Cafe mailing list
Haskell-Cafe
On Mon, Oct 09, 2006 at 11:06:35PM -0400, Seth Gordon wrote:
I finally (think I) understand monads well enough to make one up:
[...]
The not-so-nice thing is that the literal text of the password is baked
into the data definition. I'd like to have a more general version of
Secret that allows
On Thu, Sep 07, 2006 at 06:21:01AM +0100, Jn Fairbairn wrote:
David Roundy [EMAIL PROTECTED] writes:
On Wed, Sep 06, 2006 at 09:56:17AM -0700, Jason Dagit wrote:
Or maybe even more extreme you could use template haskell or the c
preprocessor to fill in the line number + column
strictly), which is
most likely another insanely dificult bit of compiler code, which
would also involve figuring out which code paths would save memory,
and which would increase the memory use.
--
David Roundy
___
Haskell-Cafe mailing list
Haskell-Cafe
. It's ugly, but beats any
other choice I'm aware of. I wish that built in functions that call
error could be automatically this way...
--
David Roundy
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
dropped after considerable debate, and
people using an older version of reiser4 still have the strange
file-as-directory semantics.
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman
cond is.
--
David Roundy
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
always just use '/' as all the
path separators, and it works fine...
--
David Roundy
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
a portable library we might want
it to work even on systems running an interesting filesystem like
rieser4.
--
David Roundy
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
that your safe
chroot monad won't die at runtime.
--
David Roundy
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
.
--
David Roundy
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
On Fri, Jul 14, 2006 at 02:28:20PM +0100, David House wrote:
On 14/07/06, David Roundy [EMAIL PROTECTED] wrote:
Anyhow, just thought I'd mention that
this isn't useful only for ordinary cyclic objects like dates.
Correct. Which is why Chris Kuklewicz included instances for, e.g., Int :)
Ah
. These are getting to be data structures that
are more complicated than anything I'm comfortable with. :(
--
David Roundy
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
! :)
--
David Roundy
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
,
doesn't need to be expressed as a GADT, I believe you can write
something like:
data MyData a = (forall a. Show a) = DC1 a
which (this is untested) should do what you want.
--
David Roundy
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http
), which may not be the case for you. And perhaps you
don't need to be careful. I've found that if bad things can happen,
they do. But that's largely because darcs has lots of users...
--
David Roundy
___
Haskell-Cafe mailing list
Haskell-Cafe
On Mon, May 29, 2006 at 07:49:20PM -0700, [EMAIL PROTECTED] wrote:
David Roundy wrote:
I want the return type d to be a phantom type of some sort (although
I'm not clear on the distinction between phantom and existential
types).
Well, they are, in a sense, dual to each other
actually corresponds to the result of a commute
function? i.e. couldn't one use
Comm_unique (undefined :: Commute Int Int Int x)
(undefined :: Commute Int Int Int y)
to prove that arbitrary types are identical?
--
David Roundy
http://www.darcs.net
On Fri, May 26, 2006 at 08:39:28PM -0700, [EMAIL PROTECTED] wrote:
David Roundy wrote:
class Commutable a b d c
commute :: Commutable a b d c =
(Patch a b, Patch b c) - (Patch a d, Patch d c)
But for this to work properly, I'd need to guarantee that
1. if (Commutable
the case...
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
this problem, or even if
it's soluble. Keep in mind that all these types (a, b, c and d) will be
phantom types.
Any suggestions would be welcome.
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http
the safety
of knowing that only that list of functions can be called, and that they
all have the appropriate return type (or maybe they'll all return IO (), I
don't know).
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
audited code, that's not likely to be worth the effort.)
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
to compile *anything*.
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
not in the
publicly available repo). If the patches aren't compressed, they are
indeed mmapped as an entire file.
And alas, even I don't have much time at the moment to help with optimizing
darcs.
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe
On Thu, Dec 29, 2005 at 01:42:29PM +0100, Christian Maeder wrote:
David Roundy wrote:
stats elems = foldl add_elem Map.empty elems
add_elem m x = Map.insertWith (+) x 1 m
main = print $ stats $ take 100 $ repeat 1
This program has a space leak and runs out of stack space. I'm
On Thu, Dec 29, 2005 at 04:24:02PM +0100, Jean-Philippe Bernardy wrote:
On 12/29/05, David Roundy [EMAIL PROTECTED] wrote:
On Thu, Dec 29, 2005 at 01:42:29PM +0100, Christian Maeder wrote:
David Roundy wrote:
stats elems = foldl add_elem Map.empty elems
add_elem m x = Map.insertWith
Just num = Map.lookup x m'
in seq num m'
to force the (+) to be evaluated strictly, but that didn't help.
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman
On Thu, Dec 22, 2005 at 06:27:41PM -0800, Ashley Yakeley wrote:
David Roundy wrote:
Hello all,
I have a question about how to create the right kind to declare lists to be
a class. I have a class Foo
class Foo f where
foo :: f a - Foo
and I want to define that a list of Foos is also
Haskell 06 come out with a reasonable set of extensions that
are known to work together well. I've gone down this path before, adding
extension after extension, and it just leads to more and more
confusion--since I don't understand what the extensions do, or how they
change the language!
--
David
as you're
using it for list manipulations, such as xoring a list of numbers with
random numbers as a primitive form of encryption (or a strong form of
encryption, if you use a strong random number generator).
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe
really helps.
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
worker id tv
--
David Roundy
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
me how many times that rule has proven true, and yet I *still* don't
think to define a new GADT for every problem I run into...
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman
it statically count references and avoid allocation of
intermediates?
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
On Mon, Nov 28, 2005 at 07:27:44AM -0500, Dimitry Golubovsky wrote:
Any ideas, pointers?
unsafeInterleaveIO does what you want.
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman
On Mon, Nov 21, 2005 at 02:48:48PM +0100, Wolfgang Jeltsch wrote:
Am Montag, 21. November 2005 14:27 schrieb David Roundy:
On Sun, Nov 20, 2005 at 04:21:05PM +0100, Wolfgang Jeltsch wrote:
Am Samstag, 19. November 2005 17:35 schrieb Bulat Ziganshin:
7. OOP-like fields inheritance
order, so I could (safely) reorder the
fields in a record. This is really an orthogonal issue to pretty much
everything else.
Argh. When I think about records too long I get dizzy.
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
On Sun, Nov 06, 2005 at 02:29:05PM +, Joel Reymont wrote:
David,
I followed your suggestion and I think the finalizers for FPS are not
running.
This is definitely odd. I can't see a reason why the finalizers wouldn't
be running.
--
David Roundy
http://www.darcs.net
when creating the string. I've found this to be helpful at times.
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
. In some ways they're hard to use (especially when
trying to enforce weird type constraints), but in most other ways they're
very simple, which is what makes them so beautiful.
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe
on older versions of ghc).
As we've worked on this code, it seems like the solution to almost every
problem we've run into has been define a new GADT.
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http
and improved.
--
David Roundy
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
then
be developed to the new standard).
--
David Roundy
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
insufficiently lazy.
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
On Fri, Oct 07, 2005 at 06:08:48PM +, Gerd M wrote:
I still don't get it. I changed my code to structurally match your
example (see below) but the result is still the same...
How are you timing your function?
--
David Roundy
___
Haskell-Cafe
isn't
too bad (it goes all the way, and even perl has some static typing--scalars
versus arrays versus hashes). The more bugs the compiler is able to find
before you actually run your code, the better, in my opinion.
--
David Roundy
http://www.darcs.net
On Fri, Sep 16, 2005 at 02:29:33PM +0100, Glynn Clements wrote:
David Roundy wrote:
Bearing this in mind, and hoping you can see where I'm coming from, I
think my question is: shouldn't you guys be using Lisp?
Lisp is impure, weakly typed and has way too many parentheses. Why
would
fine. The catch is that isEditing is now only visible
in this scope. You could pass isEditing to another function without
causing any trouble. It might be cleaner than passing cbEdit around (for
example, if the mechanism by which the isEditing state is stored ever
changes).
--
David Roundy
in the ST monad or the IO monad, I think you're writing
imperative-style code. But I think that that sort of usage is actually
pretty uncommon.
--
David Roundy
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo
, this is likely to fail if you've got
variables names something like x', but apart from that it works nicely, and
allows you to do stuff like
foo = head . tail . sort . head
which could be ugly when written in terms of irrefutable patterns.
--
David Roundy
http://www.darcs.net
with.
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
FuseIO nor Fuse, but instead just implementing a new FS and
plugging it in. But the Fuse interface is very limited, as is the FuseIO
interface (which doesn't support, for example, file permissions), so to
make a real useful filesystem would require considerable extension of both
modules.
--
David
On Fri, Aug 12, 2005 at 02:54:03PM +0200, Lemmih wrote:
On 8/12/05, David Roundy [EMAIL PROTECTED] wrote:
On Fri, Aug 12, 2005 at 09:17:32AM -0300, Andr Vargas Abs da Cruz wrote:
readDataFromFile filename = do
bracket (openFile filename ReadMode) hClose
(\h - do contents
it myself. :)
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
/PatchCommute.lhs?c=annotate
There are also in darcs a couple of parser monads (lazy and strict) and
probably a few more monads hanging around that I haven't thought of. In
short, there really are nice practical uses non-IO monads.
--
David Roundy
___
Haskell-Cafe
On Thu, Jul 07, 2005 at 03:08:50PM +0200, Henning Thielemann wrote:
On Thu, 7 Jul 2005, David Roundy wrote:
On Tue, Jul 05, 2005 at 08:17:58PM +0200, Henning Thielemann wrote:
The example, again: If you write some common expression like
transpose x * a * x
then both the human
On Fri, Jul 08, 2005 at 03:33:16PM +0200, Henning Thielemann wrote:
On Thu, 7 Jul 2005, David Roundy wrote:
On the other hand, this is sort of a silly debate, since the API *I*
want is a subset of the API *you* want.
The API you want is certainly not just a subset of what I want. E.g
wouldn't
have to worry about writing carefully, but alas that doesn't seem to be an
option.
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
On Tue, Jul 05, 2005 at 07:49:56PM +0200, Henning Thielemann wrote:
On Tue, 5 Jul 2005, Keean Schupke wrote:
David Roundy wrote:
In short, especially since the folks doing the work (not me) seem to want
plain old octave-style matrix operations, it makes sense to actually do
, etc).
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
On Thu, Jun 30, 2005 at 02:20:16PM +0200, Henning Thielemann wrote:
On Thu, 30 Jun 2005, David Roundy wrote:
If we support matrix-matrix multiplication, we already automatically
support matrix-column-vector and row-vector-matrix multiplication,
whether or not we actually intend to, unless
.
And hopefully you and he can work together to create a great library (and
I'll be able to mooch off of whatever you create...). :)
--
David Roundy
http://www.darcs.net
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo
201 - 300 of 388 matches
Mail list logo