Re: [Haskell-cafe] Speed comparison?

2005-05-04 Thread Gracjan Polak
Daniel Carrera wrote:
 Hi all,

 Thank you for all the information on my previous question. I learned a
 lot, and good pointers to more info.

 My next question is about speed. How fast would you consider Haskell?
 (say, for computational work). How would you compare it to C, Python and
 Ruby?
I started a small project in Ruby some time ago. It involved a bit of 
parsing and moving quite large binary data around. In Ruby speed was 
real problem so I looked for another language and ended up with... 
Haskell :)

Speed of GHC compiled programs is ok for me, but if you need handling of 
binaries FFI is your very good friend!

I cannot say anything about OCaml or Python, though.
--
Gracjan
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Comparison with Clean?

2005-05-04 Thread Daniel Carrera
Hi all,
Anyone here familiar with the Clean programming language?
http://www.cs.ru.nl/~clean/
It looks /very/ similar to Haskell, both in functionality and syntax.
I would be grateful for any sort of comparison. I'm trying to decide 
which language I should try to learn.

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


Re: [Haskell-cafe] Re: Haskell vs OCaml

2005-05-04 Thread Marcin 'Qrczak' Kowalczyk
Donn Cave [EMAIL PROTECTED] writes:

 I have been able to build ocaml everywhere I have wanted it, including
 the native code compiler.

And it builds itself much faster than GHC.

(I couldn't measure how much, because GHC didn't build at all, failing
to find HsBaseConfig.h.in.)

-- 
   __( Marcin Kowalczyk
   \__/   [EMAIL PROTECTED]
^^ http://qrnik.knm.org.pl/~qrczak/
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


RE: [Haskell-cafe] Mutual recursive modules with GHC: Classes, instances

2005-05-04 Thread Henning Thielemann
On Wed, 4 May 2005, Simon Peyton-Jones wrote:
hi-boot files can't contain class declarations.  This should be checked,
but isn't, hence puzzling message.
GHC 6.4 has a better setup.   Actually, it still doesn't check for
absence of class decls, but it will shortly.
This means it is impossible to declare mutually dependent classes where 
each class resides in a separate module?
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


RE: [Haskell-cafe] Mutual recursive modules with GHC: Classes, instances

2005-05-04 Thread Simon Peyton-Jones
I'm afraid so, as of today.  It's the kind of thing that could get fixed
if enough people wanted it, but at the moment it's pretty low on the
list.

Simon

| -Original Message-
| From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of
| Henning Thielemann
| Sent: 04 May 2005 10:31
| To: Simon Peyton-Jones
| Cc: Haskell Cafe
| Subject: RE: [Haskell-cafe] Mutual recursive modules with GHC:
Classes,instances
| 
| 
| On Wed, 4 May 2005, Simon Peyton-Jones wrote:
| 
|  hi-boot files can't contain class declarations.  This should be
checked,
|  but isn't, hence puzzling message.
| 
|  GHC 6.4 has a better setup.   Actually, it still doesn't check for
|  absence of class decls, but it will shortly.
| 
| This means it is impossible to declare mutually dependent classes
where
| each class resides in a separate module?
| ___
| 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] Comparison with Clean?

2005-05-04 Thread Krasimir Angelov
If you want to compare Haskell and Clean then take a look at Object
I/O library. It is ported to Haskell and you can learn a lot comparing
both implementations. I spent a lot of time translating Clean
functions to Haskell and my own impression is that Haskell's do
notation is much more easier that uniqueness typing. In Clean you have
to explicitly maintain the state while in Haskell it is hidden. In
order to preserve uniquenes property of state, quite often you have
write uggly functions like:

getXYZ :: State - (XYZ, State)
getXYZ st = (f st, st)

while in Haskell the above function should be:

getXYZ :: State - XYZ
getXYZ st = f st

It is more clean and from the type signature you can see that this is
readonly access to the state.

Cheers,
 Krasimir

On 5/4/05, Daniel Carrera [EMAIL PROTECTED] wrote:
 Hi all,

 Anyone here familiar with the Clean programming language?

 http://www.cs.ru.nl/~clean/

 It looks /very/ similar to Haskell, both in functionality and syntax.

 I would be grateful for any sort of comparison. I'm trying to decide
 which language I should try to learn.

 Cheers,
 Daniel.
 ___
 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] Mutual recursive modules with GHC: Classes, instances

2005-05-04 Thread Henning Thielemann
On Wed, 4 May 2005, Simon Peyton-Jones wrote:
I'm afraid so, as of today.  It's the kind of thing that could get fixed
if enough people wanted it, but at the moment it's pretty low on the
list.
Mutual dependent classes in separate modules are a consequence of 
rigorously defining exactly one class or one principal type per module. In 
my opinion this is a very clean approach, but many library writers seems 
to dislike it. Maybe they dislike it because they risk mutual dependent 
modules ...
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Comparison with Clean?

2005-05-04 Thread Jerzy Karczmarczuk
Daniel Carrera wrote:
Hi all,
Anyone here familiar with the Clean programming language?
http://www.cs.ru.nl/~clean/
It looks /very/ similar to Haskell, both in functionality and syntax.
I would be grateful for any sort of comparison. I'm trying to decide 
which language I should try to learn.

I sent something to this newsgroup more than two years ago, suggesting
that such a topic SHOULD be in the FAQs... More or less:
0. They *ARE* very similar, both being lazy, pure functional languages,
  and the possible application domains are strongly overlapping. I
  strongly suggest to everybody who wants to specialize in the FP
  that he/she learn both. YES! It won't harm you, it will give you a bit
  larger perspective.
1. There is a visible difference in general philosophy.
  - Haskell started as an exploration language, undergoes frequent (even if
small) modifications, its maintenance is distributed, there are at
least 3 (OK, 4 if you wish) major implementations, and the documentation
(even if driven by one super-mind) is the result of a community consensus.
  - Clean - in its actual instance - was thought as an industrial-strength
programming platform, stable, and changing only in the case of necessity.
(I mean - when the authors feel really unhappy about the status quo, and
they have nothing else to do, which is rather rare...)
  There is a cross-breeeding between them, but on quite different levels.
  While the authors of Clean profit from time to time from Haskell formal
  constructions (notably the superficial appearance of the class system),
  some Haskell-oriented people have been fascinated by the powerful and
  coherent (even if difficult) Clean interfacing library.
  Haskell produces/inspires from time to time some offsprings (and - with my
  full sincere respect - some bastards): generic Haskell, Polyp, Cayenne,
  etc., some really wonderful headache generators, strongly recommended
  for all free and ambitious minds. Clean is more application-oriented,
  and has a good reputation for being really fast.
  We could have read here and elsewhere some critical voices: that it
  would be better to concentrate the human effort on one language, instead
  of producing two  faux jumeaux , if you know what I mean...
  I disagree violently with this, and I think that the co-existence, and
  the competition between them is good, inspiring, and offering better
  support for those who think already on new languages.
2. Thus, there are some design differences. Haskell had since the beginning
  the arbitrary-precision Integers, and numeric computations were for too
  long considered as something of less importance. This resulted in 
  somewhat unsatisfactory status of numerically-oriented parts of the
  standard library, but it is improving. Clean in these contexts is more
  brutal, and seems to optimize better some programs which in Haskell
  need some attention of the user (such as avoiding to use Integers, where
  Ints suffice; Clean has only standard Ints).
  Also - for the current implementations - the manipulation of arrays is
  more efficient in Clean. (But I haven't done any benchmarking with the
  last GHC version...)
  Clean has quite efficient head-strict, unboxed, but spine-lazy lists, which
  is *very good* for signal processing, especially together with an aggressive
  strictness analysis. Haskell is more difficult to optimize here.

  The type inference is a bit different, and in general the type systems
  *are* different. Haskell system is easier to learn. The status, the relation
  between classes and types is a nice, baroque construction.
  Clean class system is - apparently - more plain, the relation between
  classes and overloaded functions is more straightforward, but if you look
  at some details, it is substantially more complicated, and sometimes
  disturbing.
  In Haskell a function which takes two arguments and produces a result of
  type c has the type   a - b - c. In Clean you may write it as 
  a b - c
  which *will* disturb a Haskeller, since it might be understood as a one-
  argument function with a being some constructor. Clean shortcuts produce
  the effect that the types of
 f x y = z x yand
 f x = \y - z x y
  are different, while in Haskell it is the same. Some missing or redundant
  parentheses in the type specification in Clean are far from being inocuous,
  *never* try to write the above as (a b) - c ...

  Clean type categoriess are quite rich. Uniqueness, strictness, type 
  dependence [a=b] etc. - all this must be studied for many hours in order 
  to be able to understand some compiler messages and/or to code in the most
  efficient way..

3. Some people say Haskell uses Monads, Clean - uniqueness types for IO
  and elsewhere.
  Uniqueness type for a variable means that that this variable can be
  accessed only in one place within the program. So, if there a new
  object is produced from the transformation of the original, 

Re: [Haskell-cafe] Comparison with Clean?

2005-05-04 Thread Tomasz Zielonka
On Wed, May 04, 2005 at 05:11:37AM -0400, Daniel Carrera wrote:
 Hi all,
 
 Anyone here familiar with the Clean programming language?
 
 http://www.cs.ru.nl/~clean/
 
 It looks /very/ similar to Haskell, both in functionality and syntax.
 
 I would be grateful for any sort of comparison. I'm trying to decide 
 which language I should try to learn.

Take a look at the dissertation of Matthew Naylor, the author of hacle,
a Haskell to Clean translator. It contains a detailed comparison of
similarities and differences.

In the past there were many discussions about differences in
convenience, performance. You should be able to find them searching the
web and newsgroup articles.

Personally, I recommend starting with Haskell (but of course I am
biased ;) but also taking a look at Clean. It has some nice features,
like uniqueness typing, built-in support for dynamics (AFAIK only on
windows), IDE, a proof assistant, etc.

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


Re: [Haskell-cafe] Speed comparison?

2005-05-04 Thread John Hughes

Furthermore, the Haskell page says that ghc produces fast programs.
So I would guess that Haskell is faster than Python, but not as fast
as C.
Would that be correct?
   

Usually yes.
 

In a sense. I think it's important to remember that what matters is 
performance of a whole application, not of highly tuned benchmark code, 
and in writing applications with good performance, then the quality of 
profiling tools, and (especially) the amount of time the programmer has 
available for tuning, can be far more important than the compiler. There 
have certainly been occasions where Haskell entries to the ICFP 
programming contest have beat OCaml or even C/C++ entries on 
performance, by a wide margin. Likewise Ericsson's ATM switch, which is 
controlled by a million lines plus of Erlang (running on a byte code 
interpreter!), performs better than all its competitors.

Benchmarks give a very one-sided view, ignoring the large effect that 
ease of programming can have on the final system's performance.

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


Re: [Haskell-cafe] Comparison with Clean?

2005-05-04 Thread Daniel Carrera
Hi Jerzy,
Thank you for your thorough response. I will archive it and come back to 
it as a reference. As I learn more about FP features (e.g. Monads) I'll 
be able to get more from your description.

But just a quick note:
4. A general observation about the use of both languages by a beginner who
  wants to learn on examples:
  Haskell disposes of two decent interactive interpreters: Hugs and GHCI
  permitting to test directly small expression, to ask about their types,
  etc. which is often useful for debugging, and for grasping the essentials
  on small exercises.
For me, right now, this makes a world of a difference. I'm experimenting 
with small exercises on Hugs right now.

  It must be admitted though that neither is really an *interactive* 
Yeah, I noticed... ;-)  But I recently learned about a neat workaround:
I have a file called Test.hs and load it with ':l Test'. Then I start 
exprimenting. I make a small change and type ':l Test' again. So it's 
almost interactive, and not excessively akward.

I think I'll learn a bit more using Haskell, and then I'll be in a 
better position to decide where to continue (probably with Haskell at 
first).


Now, for the people who asked those questions. Choose whatever you wish,
if your philosophy is I have no time to learn two languages, only one,
so tell me which one is better, then I have some VERY STRONG statements:
* Whoever says to you H is *better* that C (or vice-versa) is LYING.
:-)
Well, I merely ask for general impressions and go from there.

* If you want to learn FP, you should have a good view on the principal
 paradigms, not on particular syntactic constructs. Then, some knowledge
 of two different languages is more than helpful.
Ok. Good to know.
* Learning of languages is a big adventure and pleasure.
That's why I'm here.  :-)
I have a strong preference for languages with clear, simple models. For 
example, I like C better than C++, and Ruby better than Python. Even if 
something might take fewer lines in C++ than in C, or be faster in 
Python than in Ruby, I like the feeling that I understand what I'm 
doing. And I see elegance in a simple model with few exceptions.


* Here and elsewhere both H and C communities are helpful, people who
 know, answer all questions without pretensions nor suggestions that 
they  are respectful gurus bothered by beginners (which happens too 
often on  other language-oriented newgroups I visit from time to 
time...).
Indeed. I've been pleasantly surprised by how friendly this group has 
been. I've learned a lot already, and now I have a lot of resources to 
continue my exploration of Haskell and FP.

Incidentally, the Ruby community is friendly too. :-)
Cheers,
Daniel.
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Speed comparison?

2005-05-04 Thread Daniel Carrera
John Hughes wrote:
Benchmarks give a very one-sided view, ignoring the large effect that 
ease of programming can have on the final system's performance.
Good point. Ease of programming helps you make /correct/ programs 
quicker, and some times allows you to use more advanced algorithms that 
you wouldn't dare try in C++.

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


Re: [Haskell-cafe] Comparison with Clean?

2005-05-04 Thread Bryce Bockman
Daniel,
If it is syntactical simplicity that you like you might want to learn 
Scheme as an introduction to FP.  I'm no expert on either Scheme or 
Haskell, but we all have to agree it is an elegant language.  I'm 
currently teaching myself the two in parallel, and I find that scheme is 
sort of the C of FP, in the sense that it doesn't try to be too fancy in 
what it gives you.  No fancy type system there, but you can build just 
about anything with it.  There's also some good teaching material for 
learning it.  The book Structure and Interperetation of Computer Programs 
for one.  And the lectures at:

http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/
By the authors of the book, who incedently were some of the creators of 
the language.

Scheme is strict, so it lacks some of the flexibility (and drawbacks) that 
come from Laziness, but in the book they teach you how to build a Lazy 
version of Scheme, which is instructive in understanding what's really 
going on in Lazy evaluation. Anyway, I'll stop now.

Cheers,
Bryce
On Wed, 4 May 2005, Daniel Carrera wrote:
I have a strong preference for languages with clear, simple models. For 
example, I like C better than C++, and Ruby better than Python. Even if 
something might take fewer lines in C++ than in C, or be faster in Python 
than in Ruby, I like the feeling that I understand what I'm doing. And I 
see elegance in a simple model with few exceptions.

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


[Haskell-cafe] Re: Speed comparison?

2005-05-04 Thread Aaron Denney
On 2005-05-03, David Roundy [EMAIL PROTECTED] wrote:
 An interesting challenge would be to rewrite fftw in haskell, and see how
 close one could come to the performance of the original... :)

What precisely do you mean by that?  FFTW is C code generated by OCaml?
Do you want to retarget ti so that Haskell is generated, or rewrite the
generator in Haskell? (Or both?)

-- 
Aaron Denney
--

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


Re: [Haskell-cafe] Re: Speed comparison?

2005-05-04 Thread Greg Buchholz
Aaron Denney wrote:
 On 2005-05-03, David Roundy [EMAIL PROTECTED] wrote:
  An interesting challenge would be to rewrite fftw in haskell, and see how
  close one could come to the performance of the original... :)
 
 What precisely do you mean by that?  FFTW is C code generated by OCaml?
 Do you want to retarget ti so that Haskell is generated, or rewrite the
 generator in Haskell? (Or both?)

Maybe not completely related, but you might find this paper interesting...

http://lambda-the-ultimate.org/node/view/652

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


Re: [Haskell-cafe] Comparison with Clean?

2005-05-04 Thread karczma
Bryce Bockman writes: 

If it is syntactical simplicity that you like you might want to learn 
Scheme as an introduction to FP.  I'm no expert on either Scheme or 
Haskell, but we all have to agree it is an elegant language.  I'm 
currently teaching myself the two in parallel, and I find that scheme is 
sort of the C of FP, in the sense that it doesn't try to be too fancy in 
what it gives you.  No fancy type system there, but you can build just 
about anything with it.  
I would rather not compare Scheme to C.
C is a fixed-syntax language, the lack of fanciness is *rigidity*.
Scheme is infinitely extensible, don't say that its *syntax* is simple
just because you have its Cambridge-Polish notation, parenthesed/prefixed. 

Just look at the syntax of DO, of classes, units, etc. in DrScheme, just
try to imagine the power of a *general* macro-expander, very far from cpp... 

Scheme is strict, so it lacks some of the flexibility (and drawbacks) that 
come from Laziness, but in the book they teach you how to build a Lazy 
version of Scheme, which is instructive in understanding what's really 
going on in Lazy evaluation.
Don't confuse categories please. SICP doesn't say how to make a lazy variant
of Scheme. Applicative protocol is not normal protocol, the reduction is,
as it is. On the other hand, it is relatively easy to make lazy constructs,
streams based on explicit, user-controllable thunks, since you can of
course construct dynamically functional objects.
This does not necessarily tell you what is the *real* implementation of
laziness in Haskell, and even less in Clean; manual thunks are possibly
different from a specific graph reduction strategy implemented by a lazy
language compiler. You will learn something anyway, but perhaps something
different. 

Jerzy Karczmarczuk 

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


Re: [Haskell-cafe] Comparison with Clean?

2005-05-04 Thread Benjamin Franksen
On Wednesday 04 May 2005 22:22, [EMAIL PROTECTED] wrote:
 Bryce Bockman writes:
  Scheme is strict, so it lacks some of the flexibility (and drawbacks)
  that come from Laziness, but in the book they teach you how to build a
  Lazy version of Scheme, which is instructive in understanding what's
  really going on in Lazy evaluation.

 Don't confuse categories please. SICP doesn't say how to make a lazy
 variant of Scheme. Applicative protocol is not normal protocol, the
 reduction is, as it is. 

We may have a different copy of SICP, but in mine (2nd edition) there is 
Chapter 4.2 Variantions on a Scheme -- Lazy Evaluation and in particular 
4.2.2 An Interpreter with Lazy Evaluation.

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


Re: [Haskell-cafe] Comparison with Clean?

2005-05-04 Thread Bryce Bockman
I was trying to draw an analogy between imperitive and functional language 
development over time.  In both cases we seem to have a progression 
towards More complicated type systems etc.  That was really my only point.
To say C is to Imperative languages as Scheme is to functional languages 
does not say that C is as expressive as any functional language.
Of course, I should have known that such a comparison would be disturbing 
to those on this list.

On Wed, 4 May 2005 [EMAIL PROTECTED] wrote:
Bryce Bockman writes: 
I would rather not compare Scheme to C.
C is a fixed-syntax language, the lack of fanciness is *rigidity*.
Scheme is infinitely extensible, don't say that its *syntax* is simple
just because you have its Cambridge-Polish notation, 
parenthesed/prefixed. 
Just look at the syntax of DO, of classes, units, etc. in DrScheme, just
try to imagine the power of a *general* macro-expander, very far from 
cpp... 
Scheme is strict, so it lacks some of the flexibility (and drawbacks) 
that come from Laziness, but in the book they teach you how to build a 
Lazy version of Scheme, which is instructive in understanding what's 
really going on in Lazy evaluation.

I'm confused by you're sentence: 
Applicative protocol is not normal protocol, the reduction is,
as it is.
Are you saying that Lazy is not the same as normal order evaluation?  My 
point was that in SICP in addition to the Applicative Order interpereter.
They also show how one could go about building a Normal Order version. 
Are Normal Order evaluation and Laziness totally different?  Again I'm 
just learning here.

On the other hand, it is relatively easy to make lazy constructs,
streams based on explicit, user-controllable thunks, since you can of
course construct dynamically functional objects.
This does not necessarily tell you what is the *real* implementation of
laziness in Haskell, and even less in Clean; manual thunks are possibly
different from a specific graph reduction strategy implemented by a lazy
language compiler. You will learn something anyway, but perhaps something
different.
Okay.  That much is clear.  My next question would be is there a SICP 
level text that could teach one how to build a lazy 
(compiler/interpereter) in the way that Haskell does it?

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


Re: [Haskell-cafe] Comparison with Clean?

2005-05-04 Thread Michael Vanier
 From: Benjamin Franksen [EMAIL PROTECTED]
 Date: Wed, 4 May 2005 22:47:21 +0200
 
 On Wednesday 04 May 2005 22:22, [EMAIL PROTECTED] wrote:
  Bryce Bockman writes:
   Scheme is strict, so it lacks some of the flexibility (and drawbacks)
   that come from Laziness, but in the book they teach you how to build a
   Lazy version of Scheme, which is instructive in understanding what's
   really going on in Lazy evaluation.
 
  Don't confuse categories please. SICP doesn't say how to make a lazy
  variant of Scheme. Applicative protocol is not normal protocol, the
  reduction is, as it is. 
 
 We may have a different copy of SICP, but in mine (2nd edition) there is 
 Chapter 4.2 Variantions on a Scheme -- Lazy Evaluation and in particular 
 4.2.2 An Interpreter with Lazy Evaluation.
 
 Ben

To be completely accurate: the evaluation order is Scheme is strict, not
lazy, forever and ever, amen.  That doesn't change.  What SICP shows you
how to do in chapter 4 (brilliantly, I think) is how to write a
metacircular evaluator which is a Scheme interpreter written in Scheme
itself.  Of course, because you have a Scheme interpreter running on top of
another Scheme interpreter, the (outer) interpreter is going to be pretty
slow, but the point of the chapter is not to build a useful interpreter but
to really understand how interpreters work.  Once you understand that, they
show that it's relatively easy to build a different kind of Scheme
interpreter, one that uses lazy evaluation instead of strict evaluation.
That's not real Scheme by any means, but it can be used to do real
computations.  Check out http://mitpress.mit.edu/sicp for the whole story.

We now return you to your regularly-scheduled language...

Mike


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


Re: [Haskell-cafe] Comparison with Clean?

2005-05-04 Thread Jacob Nelson

On Wed, 4 May 2005, Benjamin Franksen wrote:
We may have a different copy of SICP, but in mine (2nd edition) there is
Chapter 4.2 Variantions on a Scheme -- Lazy Evaluation and in particular
4.2.2 An Interpreter with Lazy Evaluation.
Here's the direct link:
http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-27.html#%_sec_4.2.2
jacob
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: Speed comparison?

2005-05-04 Thread David Roundy
On Wed, May 04, 2005 at 07:20:20PM +, Aaron Denney wrote:
 On 2005-05-03, David Roundy [EMAIL PROTECTED] wrote:
  An interesting challenge would be to rewrite fftw in haskell, and see how
  close one could come to the performance of the original... :)
 
 What precisely do you mean by that?  FFTW is C code generated by OCaml?
 Do you want to retarget ti so that Haskell is generated, or rewrite the
 generator in Haskell? (Or both?)

Both.  I'd be curious to see how well one could do with pure haskell code.
It may be possible to do reasonably well, and would certainly be
instructive.  FFTW is not simpley C code generated by OCaml, the C code
also does runtime timing and optimization, generating new algorithms (by
combining existing primitives) on the fly.  This sort of
code-generation-on-the-fly (or rather code-recombination) is what
functional languages ought to be good at, if only there isn't too much
overhead.

I'd be interested if someone *else* did this.  FFTW is an amazing piece of
work, and I'd not want to bother duplicating their work.  Another (also
crazy) idea would be to implement a runtime-optimized version of ATLAS.
That would be somewhat more practical, since I find it annoying that ATLAS
is compile-time optimized, so you need to recompile it on each computer
you use (or if you buy new RAM...).  Of course, doing it all in haskell
would still be silliness, but it'd be cool... :)  And I think the
algorithms involved in block matrix multiplies are much simpler than those
involved in ffts.

I don't know how it would work out in the real world, but it seems like one
*ought* to be able to write truly beautiful auto-tuned code in haskell!
Perhaps even some sort of a time it as you go mechanism could be used (if
one had a clock with enough precision), which would eliminate the annoying
feature of FFTW that one needs to create and keep track of plans.

(Mostly I'm just daydreaming here... if only I were an undergrad again and
had the time and energy for excessing hacking with very little hope of any
practical benefit.)
-- 
David Roundy
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: Haskell vs OCaml

2005-05-04 Thread Jacques Carette
There is also Template Haskell vs MetaOCaml.
For the life of me, I still cannot fathom why Template Haskell is untyped, while MetaOCaml is fully typed.  Which is 
the main reason I write meta-program in MetaOCaml and 'other' programs in Haskell.

There is the additional aspect that my meta-programs tend to be functional, but the programs they write are 
imperative.  That is easy to do in MetaOCaml, and I am still daunted by the idea of getting Template Haskell to do the 
same!

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


Re: [Haskell-cafe] Comparison with Clean?

2005-05-04 Thread Benjamin Franksen
On Wednesday 04 May 2005 23:24, [EMAIL PROTECTED] wrote:
 Benjamin Franksen writes:
  [EMAIL PROTECTED] wrote:
  Bryce Bockman writes:
 
  Don't confuse categories please. SICP doesn't say how to make a lazy
  variant of Scheme. Applicative protocol is not normal protocol, the
  reduction is, as it is.
 
  We may have a different copy of SICP, but in mine (2nd edition) there is
  Chapter 4.2 Variantions on a Scheme -- Lazy Evaluation and in
  particular 4.2.2 An Interpreter with Lazy Evaluation.

 Absolutely right, and BTW., I had
 http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-27.html#%_sec_4.2
 on the screen when I wrote what I wrote. Michael Vanier explained well
 my aim (better than myself, an optional sad smiley here...).

 I wanted just to say that a lazy interpreter etc., *is not Scheme*. Well,
 AS say: In this section we will implement a normal-order language that is
 the same as Scheme except that compound procedures are non-strict in each
 argument. Primitive procedures will still be strict. We read, and we see
 that the lazy layer is a superficial one, with 'forcing' implemented at
 the surface, so for me it was enough to remark that I consider it to be
 a different language.

Ok, I think I see now what you mean.

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


[Haskell-cafe] Conal Elliott's Vertigo, anyone get it to run?

2005-05-04 Thread Atwood, John Wesley
I tried to run Conal Elliott's Vertigo demos, on 3 diffferent XP boxes;
it ran on none.  The error is Common Language Runtime Services  -
Appication has generated an exception that could not be handled.
Process id=, Thread id=.  Any suggestions?  
http://conal.net/Vertigo/

John Atwood

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


Re: [Haskell-cafe] Conal Elliott's Vertigo, anyone get it to run?

2005-05-04 Thread Sebastian Sylvan
On 5/5/05, Atwood, John Wesley [EMAIL PROTECTED] wrote:
 I tried to run Conal Elliott's Vertigo demos, on 3 diffferent XP boxes;
 it ran on none.  The error is Common Language Runtime Services  -
 Appication has generated an exception that could not be handled.
 Process id=, Thread id=.  Any suggestions?
 http://conal.net/Vertigo/
 

Do you have .Net installed?

I got it to run, don't know what  you're doing wrong.

/S

-- 
Sebastian Sylvan
+46(0)736-818655
UIN: 44640862
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Where do you use Haskell?

2005-05-04 Thread Michael Walter
On 5/3/05, Ben Lippmeier [EMAIL PROTECTED] wrote:
 Many aspects of functional programming are generalisations of what goes
 on in imperative languages.

Huh? In which sense is that?
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe