[Haskell-cafe] Re: New slogan for haskell.org
Henning Thielemann wrote: apfelmus wrote: gwern wrote: Now, the Main Page on haskell.org is not protected, so I could just edit in one of the better descriptions proposed, but as in my Wikipedia editing, I like to have consensus especially for such visible changes. Hey, why has the front-page already been changed then? I don't like neither this nor the new slogan. Edit war! Yarr, bring up the guns! Y-rifle, fire! http://ellemose.dina.kvl.dk/cgi-bin/sestoft/lamreduce?action=normalizeexpression=%5Clamb.%28%5Cx.%5Cf.f%28x+x+f%29%29+%28%5Cx.%5Cf.f%28x+x+f%29%29+%28%5Cf.%5Cda.f%29evalorder=normal+order Goodstein gun, fire! import Data.Tree type Number = Forest Integer zero = []; one = [Node 1 zero]; two = [Node 1 one] -- (shortened) hereditary three = one++two; four = [Node 1 two] -- base 2 representation subtractOne p (Node 1 []:xs) = xs subtractOne p (Node a []:xs) = Node (a-1) []:xs subtractOne p (Node 1 k :xs) = let k' = subtractOne p k in subtractOne p [Node 1 k'] ++ Node (p-1) k':xs subtractOne p (Node a k :xs) = subtractOne p [Node 1 k ] ++ Node (a-1) k :xs goodstein !p n = if null n then [] else n:goodstein (p+1) (subtractOne (p+1) n) goodsteingun n = concat $ lamb:map (const da) (goodstein 2 n) goodsteingun three lambdadadadadada goodsteingun four lambdadadadadadadadadadadadadadadadadadadadadada[...] Will it ever cease? Regards, apfelmus ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
gwern wrote: Now, the Main Page on haskell.org is not protected, so I could just edit in one of the better descriptions proposed, but as in my Wikipedia editing, I like to have consensus especially for such visible changes. Hey, why has the front-page already been changed then? I don't like neither this nor the new slogan. Concerning what slogan should be on the front page, I prefer technical terms to buzzwords. myReadText = filter (not . buzzword) In any case: it's not our task to convince others by means of an enterprisey formulation, people are free to choose. If they don't want it, so be it. We provide data points (I have written a big but robust program, it's called insert name here, We have a FFI and its use is explained here, look, this quicksort function is so beautiful) but judgment is what everybody has to do for himself. Regards, apfelmus ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
On Wed, 12 Dec 2007, apfelmus wrote: gwern wrote: Now, the Main Page on haskell.org is not protected, so I could just edit in one of the better descriptions proposed, but as in my Wikipedia editing, I like to have consensus especially for such visible changes. Hey, why has the front-page already been changed then? I don't like neither this nor the new slogan. Edit war! In any case: it's not our task to convince others by means of an enterprisey formulation, people are free to choose. If they don't want it, so be it. We provide data points (I have written a big but robust program, it's called insert name here, We have a FFI and its use is explained here, look, this quicksort function is so beautiful) but judgment is what everybody has to do for himself. Good point. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
Combinators get my code done, tralalalala, laughing out loud! Quickcheck locates all of my bugs, tralalalala, laughing out loud! Fusion laws make my code run fast, tralala, lalala, lololol! Folks, I'm so done, Merry Christmas, tralalalala, laughing out loud! ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
Stefan O'Rear wrote: In my C programming, I've taken to using gdb as a REPL: Ah, that's a nice trick, thanks! I wish I there had been a gdb on MacOS 8.5 back then ;) Regards, apfelmus ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
Yitzchak Gale [EMAIL PROTECTED] writes: Guido is clearly not rejecting functional influences on Python, he is supporting them. But he feels that these specific instances do not fit in. I read some of his statements, and find that I disagree vehemently. But I wonder if partial evaluation is contributint to this? GvR thinks list comprehensions are better than map or filter, and wants nested functions instead of lambda. So where I like to write filter odd or(\xs - (filter odd xs, filter even xs)) he would prefer let filter_odd xs = [ x | x - xs, odd x ] in filter_odd and let map_even_odd xs = let filter_odd ys = [ y | y - ys, odd y ] filter_even ys = [ y | y - ys, even y ] in (filter odd xs, filter even xs) in map_even_odd I hope I'm not misrepresenting the Python way here, but it feels incredibly clunky. Maybe it looks better in Python? -k -- If I haven't seen further, it is by standing in the footprints of giants ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
I really like the friendly look of Ruby's homepage: http://www.ruby-lang.org/en/ * There's an interpreter download button in a high visibility position. * Visible news. * It's pretty! * A very short introduction. Ruby is... ... which is so generic, that we can copy it to the Haskell home page without modification. I didn't say I wanted the text. I just like the layout (and the pretty pixels.) :) ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
On Fri, 30 Nov 2007, Johan Tibell wrote: On Nov 30, 2007 1:30 AM, Ivan Miljenovic [EMAIL PROTECTED] wrote: Speaking of Stackless Python, its homepage (http://www.stackless.com/) has a rather nice layout... maybe slightly less emphasis on the About section, but there you've got the links, the info and the news all on the one page. I really like the friendly look of Ruby's homepage: http://www.ruby-lang.org/en/ * There's an interpreter download button in a high visibility position. * Visible news. * It's pretty! * A very short introduction. Ruby is... ... which is so generic, that we can copy it to the Haskell home page without modification. * The most important links (documentation, libraries, community, etc.) are available to the right. I like the fact that there are no subcategories at this point. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
The Haskell code works with arbitrary precision Integer, the C code with a fixed size int. This is also a work for a library (BTW like Haskell does), you can use gmp or mpfr. This will just add one line to store x/2 in y and avoid its recomputation. You will also have to switch from intset to set. And there one can start to see the difference. The code refactoring will be longer since C doesn't support parametric polymorphism nor operator overloading. Yes, Haskell is just great, so many things are hard-wired. Even if you use arbitrary precision Integer and appropriate set implementations, there is still no infinite, lazy list that avoids recomputation... I guess your C code either uses some non-standard includes or does not fit on a single page anymore. Just for the record: Using a 64-bit machine (1.5GHz Itanium2) and a well scaling intset (Judy1), (something like) your C code calculates: * within 1GB and in about 25 mins: a_{892163852} = 11314755057 max seen so far: a_{846081651} = 770163004735488 (50 bit) * and within 32GB and in about 22 hours: a_{28515445370} = 165480993670 max seen so far: a_{25880571766} = 32905425960566784 (55 bit) I guess that a Haskell program that verifies these values will depend on an external intset implementation. Or uses another data structure, for example some Set_of_Intervals... /BR, Mirko Rahn ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
On Nov 30, 2007 1:30 AM, Ivan Miljenovic [EMAIL PROTECTED] wrote: Speaking of Stackless Python, its homepage (http://www.stackless.com/) has a rather nice layout... maybe slightly less emphasis on the About section, but there you've got the links, the info and the news all on the one page. I really like the friendly look of Ruby's homepage: http://www.ruby-lang.org/en/ * There's an interpreter download button in a high visibility position. * Visible news. * It's pretty! * A very short introduction. Ruby is... * The most important links (documentation, libraries, community, etc.) are available to the right. I like the fact that there are no subcategories at this point. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
Laurent Deniau wrote: apfelmus wrote: Back then, I was given the task to calculate some sequence of numbers which I did in one page of C code. import Data.Set xs = let f x m = x: let y = x `div` 2 in f (if member y m then 3*x else y) (insert x m) in f 1 (singleton 0) As said, it's two lines if the terminal is too small :) I can't see how it could be one page of C unless the page is 10 lines long ;-) The following code is the direct translation of your Haskell code (except that it prints the result instead of building a list). a+, ld. #include stdio.h #include intset.h void f(int x, intset s) { printf(%d, , x); f (intset_elem(s, x/2) ? 3*x : x/2, intset_put(s, x)); } int main(void) { f (1, intset_put(intset_new(), 0)); } Well, I only remember that it took _me_ a page of C code :D Basically due to a hand-coded intset and user interaction (no REPL for C, after all). Regards, apfelmus ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
The following code is the direct translation of your Haskell code void f(int x, intset s) { printf(%d, , x); f (intset_elem(s, x/2) ? 3*x : x/2, intset_put(s, x)); } No, not that easy. The Haskell code works with arbitrary precision Integer, the C code with a fixed size int. On a 32 bit machine, try to calculate a_{1805133}, which equals to 19591041024. Or a_{8392780} = 26665583616. Or a_{850} = 10804333. These values are calculated with the Haskell program in 370s and ~1GB memory usage. Fair enough, on the same machine a C program (*two* pages long) was able to calculate a_{23448481} = 594261577728 and a_{2500} = 192365946 in 50s and ~1GB memory usage. /BR, Mirko Rahn ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
Simon Marlow writes: Perhaps Type Inference: deduces types automatically, so you don't have to clutter up your code with type declarations. You can still write type declarations for documentation purposes, and these will be automatically checked by the compiler. Perhaps it won't harm adding that manual signatures are useful semantically as well, for the disambiguation. What I'd *really* like to see is a bunch of links on the front page leading to pages that describe the main differences between Haskell and some other language (C, Python, Java, C#, F#, ...). ... and, perhaps, playing not only with the pedagogy by contrast, but also by similarities, to mention Clean. Jerzy Karczmarczuk ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
Mirko Rahn wrote: The following code is the direct translation of your Haskell code void f(int x, intset s) { printf(%d, , x); f (intset_elem(s, x/2) ? 3*x : x/2, intset_put(s, x)); } No, not that easy. The Haskell code works with arbitrary precision Integer, the C code with a fixed size int. On a 32 bit machine, try to calculate a_{1805133}, which equals to 19591041024. Or a_{8392780} = 26665583616. Or a_{850} = 10804333. These values are calculated with the Haskell program in 370s and ~1GB memory usage. This is also a work for a library (BTW like Haskell does), you can use gmp or mpfr. This will just add one line to store x/2 in y and avoid its recomputation. You will also have to switch from intset to set. And there one can start to see the difference. The code refactoring will be longer since C doesn't support parametric polymorphism nor operator overloading. Fair enough, on the same machine a C program (*two* pages long) was able to calculate a_{23448481} = 594261577728 and a_{2500} = 192365946 in 50s and ~1GB memory usage. ;-) a+, ld. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
On Thu, Nov 29, 2007 at 12:40:00PM +, Simon Marlow wrote: What I'd *really* like to see is a bunch of links on the front page leading to pages that describe the main differences between Haskell and some other language (C, Python, Java, C#, F#, ...). The easiest way to grasp what Haskell is all about is by reference to a known baseline, and programmers tend to have different baselines. e.g. the C page might start with Haskell is a functional language, whereas the Python page might start with Haskell is statically typed. As well as I am a $language programmer. linkWhy should I use Haskell?/link perhaps also things like I'm designing a programming course for undergraduates at a university. linkWhy should I use Haskell?/link I run a small company. linkWhy should my developers use Haskell?/link (but probably all with better wordings) Thanks Ian ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
On Thu, 29 Nov 2007, Simon Marlow wrote: What I'd *really* like to see is a bunch of links on the front page leading to pages that describe the main differences between Haskell and some other language (C, Python, Java, C#, F#, ...). The easiest way to grasp what Haskell is all about is by reference to a known baseline, and programmers tend to have different baselines. e.g. the C page might start with Haskell is a functional language, whereas the Python page might start with Haskell is statically typed. Python page could start with: You like 'map', 'filter', 'for x in ...' and lambda's in Python? Then you will like to learn where Python has borrowed these features. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
Henning Thielemann writes: Python page could start with: You like 'map', 'filter', 'for x in ...' and lambda's in Python? Then you will like to learn where Python has Henning, Python *may not* start in such a way. Those functionals are being obsoletised by Guido Van Rossum. for remains, obviously, but, please, don't try to convince anybody that Haskell was the first language with iterators... Jerzy Karczmarczuk ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
Henning Thielemann wrote: When I want to judge a programming language I like to see a gallery, a collection of beautiful programs. This shows me 1. what are the problems, the language developers want to tackle (does general purpose for the developers mean web, XML and data base processing or computationally intensive numerical stuff) 2. how do they solve them, i.e. what are the special features of the language and how do they help solving the problem, what style of programming does the language support. Well-said that man... Now, the question becomes what examples demonstrate the things that Haskell is good at? ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
lemming wrote: Python page could start with: You like 'map', 'filter', 'for x in ...' and lambda's in Python? Then you will like to learn where Python has What about iterators - lazy lists - and generators - lazy function definitions. And list comprehensions, both lazy and strict. And zip. And the itertools module - containing analogues for lazy ++, [n..], cycle, dropWhile, groupBy, zipWith, takeWhile, etc. All inspired by Haskell. Jerzy Karczmarczuk wrote: Henning, Python *may not* start in such a way. Those functionals are being obsoletised by Guido Van Rossum. for remains, All of them are remaining. Guido's effort to deprecate them brought down a storm of protest. Folds, known as reduce in Python, are on their way out, though. They scared people (not Pythonic). please, don't try to convince anybody that Haskell was the first language with iterators... Python's iterators are not the same as iterators in C and other older languages. They are lazy lists. The reason they named them iterators is not to scare people. Haskell was not the first to have lazy lists, but Haskell was an important part of the inspiration for introducing them into Python. Guido was forced to do something - someone had written a new Python interpreter, called Stackless Python, in which every Python function was a Scheme-like continuation. People found this very, very scary. So Guido stopped it by introducing laziness, which could be made much less scary. -Yitz ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
Yitzchak Gale writes: Python's iterators are not the same as iterators in C and other older languages. They are lazy lists. The reason they named them iterators is not to scare people. Haskell was not the first to have lazy lists, but Haskell was an important part of the inspiration for introducing them into Python. Actually, I would *sincerely* like to see some reference proving that. I cite Guido V.R., 2005: About 12 years ago, Python aquired lambda, reduce(), filter() and map(), courtesy of (I believe) a Lisp hacker who missed them and submitted working patches. (http://www.artima.com/weblogs/viewpost.jsp?thread=98196) Give to Caesar...: It was Amrit Prem; one history page on WP says that no specific mention of any Lisp heritage is mentioned in the release notes at the time, so all speculations are still possible... ++ But, in fact, Python iterators - in general - are neither lazy nor lists. No linking! They are syntactic shortcuts to *objects* possessing the method 'next'. So, there is no call by need, no updated thunks, etc. Calling them lazy is an abuse of the language, although quite intuitive. I don't want to raise a war about that... The laziness, meant as deferred procedure calls *CAN* be used in Python, also in iterator context, through generators, that's true. But still there are no update'able automatically thunks, no lazy data! If generators remind me of something, it is co-routines. BTW. The BDFL Van Rossum never said anything about scaring. He said plainly that folds are things he *hates* most. Guido was forced to do something - someone had written a new Python interpreter, called Stackless Python, in which every Python function was a Scheme-like continuation. People found this very, very scary. So Guido stopped it by introducing laziness, which could be made much less scary. Give to Caesar... Someone, was Christian Tismer: http://www.python.org/workshops/2000-01/proceedings/papers/tismers/spcpaper. htm and I am doubtful about the statement that people found it very, very scary. Simply they - usually - felt no *need* for another complication to learn, you know, *some* people are lazy... But Stackless still exists, GVR stopped nothing, and the Grant Olson's tutorial http://members.verizon.net/olsongt/stackless/why_stackless.html is really interesting, although perhaps, as usual, not for Andrew Coppin. People, stop using this damned word: scare in the context of *learning* something! Jerzy Karczmarczuk ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
On Thu, Nov 29, 2007 at 09:48:22AM +0100, apfelmus wrote: Well, I only remember that it took _me_ a page of C code :D Basically due to a hand-coded intset and user interaction (no REPL for C, after all). In my C programming, I've taken to using gdb as a REPL: [EMAIL PROTECTED]:/tmp$ vi foo.c [EMAIL PROTECTED]:/tmp$ cat foo.c int foo(int x) { return x * x; } int main(){} [EMAIL PROTECTED]:/tmp$ gcc foo.c [EMAIL PROTECTED]:/tmp$ gdb -q ./a.out Using host libthread_db library /lib/i686/cmov/libthread_db.so.1. (gdb) b main Breakpoint 1 at 0x804835e (gdb) run Starting program: /tmp/a.out Failed to read a valid object file image from memory. Breakpoint 1, 0x0804835e in main () (gdb) p foo(2) $1 = 4 (gdb) p foo(10) $2 = 100 (gdb) p foo(-1) $3 = 1 (gdb) p foo(0) $4 = 0 (gdb) p foo(2)+foo(4) $5 = 20 (gdb) quit The program is running. Exit anyway? (y or n) y [EMAIL PROTECTED]:/tmp$ Makes most debugging tasks much easier. Stefan signature.asc Description: Digital signature ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
On Thu, Nov 29, 2007 at 12:40:00PM +, Simon Marlow wrote: What I'd *really* like to see is a bunch of links on the front page leading to pages that describe the main differences between Haskell and some other language (C, Python, Java, C#, F#, ...). The easiest way to grasp what Haskell is all about is by reference to a known baseline, and programmers tend to have different baselines. e.g. the C page might start with Haskell is a functional language, whereas the Python page might start with Haskell is statically typed. I guess this is similar to Ian's suggestion. +1 Stefan signature.asc Description: Digital signature ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
On Nov 29, 2007, at 16:57 , [EMAIL PROTECTED] wrote: Yitzchak Gale writes: Guido was forced to do something - someone had written a new Python interpreter, called Stackless Python, in which every Python function was a Scheme-like continuation. People found this very, very scary. So Guido stopped it by introducing laziness, which could be made much less scary. Give to Caesar... Someone, was Christian Tismer: http://www.python.org/workshops/2000-01/proceedings/papers/tismers/ spcpaper. htm and I am doubtful about the statement that people found it very, very scary. Simply they - usually - felt no The only person I've ever heard of who was in any sense scared of Stackless Python was GvR himself. -- brandon s. allbery [solaris,freebsd,perl,pugs,haskell] [EMAIL PROTECTED] system administrator [openafs,heimdal,too many hats] [EMAIL PROTECTED] electrical and computer engineering, carnegie mellon universityKF8NH ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
frees the programmer from writing superfluous type signatures is a weak (and dubious) advantage. I very often write superfluous type signatures first (to be sure I know what I'm asking my program to do) and only then let Haskell check it. Then I leave it in as good documentation. I agree with this. Perhaps Type Inference: deduces types automatically, so you don't have to clutter up your code with type declarations. You can still write type declarations for documentation purposes, and these will be automatically checked by the compiler. I also write top-level signatures usually, but inference is still really nice inside the function. Things like let x = f y in ... + g x + ... don't make you declare the type of 'x' and change the declaration if 'f' changes return type. You just have to change 'g', not everyone in between 'f' and 'g'. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
Thomas Davie wrote: There's no such check list of good stuff with the Haskell slogan, instead, we've got a list of buzzwords, as bad as company webpages preaching that they offer synergised solutions, but not actually telling anyone what they do. I couldn't disagree more. The words used in the 'Haskell slogan' may be technical jargon; however as such they have a precisely defined meaning and actually characterize the language fine. This is exactly the opposite of 'buzzwords', which usually lack a clear and unambiguous definition (but are loved by marketing people). Cheers Ben ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
Speaking of Stackless Python, its homepage (http://www.stackless.com/) has a rather nice layout... maybe slightly less emphasis on the About section, but there you've got the links, the info and the news all on the one page. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
Yitzchak Gale writes: Haskell was not the first to have lazy lists, but Haskell was an important part of the inspiration for introducing them into Python. Jerzy Karczmarczuk wrote: Actually, I would *sincerely* like to see some reference proving that. The Python Library Reference, itertools (section 6.5 in Python 2.5): This module implements a number of iterator building blocks inspired by constructs from the Haskell and SML programming languages. Each has been recast in a form suitable for Python. Yitz, we will not quarrel, after all, we belong to the same Haskell mafia, but don't forget that itertools have been introduced in the version 2.3! It contained 'cycle', 'chain', 'dropwhile', etc. Here, I willingly sacrifice a cow to Haskell gods. But we were speaking about map and filter, and this is 1994... So, perhaps some concrete references - if given - should be tested against the historical truth. [Ohhh, my goodness... I realize that I am getting really old...] ... Give to Caesar...: It was Amrit Prem; one history page on WP says that no specific mention of any Lisp heritage is mentioned in the release notes at the time, so all speculations are still possible... OK. (That is a quote from Wikipedia, yes?) Yes. Partly. Indirectly. All speculations is mine. My source was here: http://www.python.org/search/hypermail/python-1994q2/0143.html Look, I am not arguing that this pseudo-laziness is a central feature of Python, ... So I agree with others who wrote that pointing out beautiful Haskell-inspired or Haskell-like features in a person's current favorite language might be a good way to encourage that person to have a look at Haskell. That is perfectly alright, and I assure you that I did my best to popularize the language in my local environment. However... There *IS* one danger with hypes. Several people deeply buried within other programming niches, accuse in permanence the Functionalists of being sectarian. I think that we should be modest and simple. Haskell is as any other language. Just a *very good* language. As such, it inspired others, and also, I think, it was inspired by others. Don't underline the uniqueness of the language. Notice that thanks to Haskell the DrScheme has now a lazy module. (Unless Eli Barzilay denies it...) But that laziness can be found in Snobol unevaluated expressions and Icon co-expressions, and these preceded Haskell. (Although I doubt that they influenced Haskell...) Nevertheless I think that it is psychologically convenient to underline that potential new users will find *many* familiar, or at least venerable concepts, only represented differently. All the best. Jerzy Karczmarczuk ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
apfelmus wrote: Henning Thielemann wrote: apfelmus wrote: Back then, I was given the task to calculate some sequence of numbers which I did in one page of C code. So far so good, but when I asked the task assigner about his solution, he responded: Ah, this problem, that's 1 line in Haskell. Well, 2 lines if the terminal is too small. Ah, a Haskell code contribution to the Encyclopedia of Integer Sequences? The task was just for fun, but it's sequence A05. import Data.Set xs = let f x m = x: let y = x `div` 2 in f (if member y m then 3*x else y) (insert x m) in f 1 (singleton 0) As said, it's two lines if the terminal is too small :) I can't see how it could be one page of C unless the page is 10 lines long ;-) The following code is the direct translation of your Haskell code (except that it prints the result instead of building a list). a+, ld. #include stdio.h #include intset.h void f(int x, intset s) { printf(%d, , x); f (intset_elem(s, x/2) ? 3*x : x/2, intset_put(s, x)); } int main(void) { f (1, intset_put(intset_new(), 0)); } ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
On Nov 28, 2007 6:16 PM, Laurent Deniau [EMAIL PROTECTED] wrote: I can't see how it could be one page of C unless the page is 10 lines long ;-) The following code is the direct translation of your Haskell code (except that it prints the result instead of building a list). a+, ld. #include stdio.h #include intset.h Which C standard defines intset.h? Juanma ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
On Thu, 29 Nov 2007, Ben Franksen wrote: Thomas Schilling wrote: I put up a draft page. Feel free to adjust it. http://haskell.org/haskellwiki/FrontpageDraft I like the current version better. It is /very/ difficult to pack in such a short paragraph a list of the most important concepts /and/ advertising about how useful all this is. Rather than an advertising front page paragraph, I'd like to have a good introductory page. It should mention all the distinguishing features of Haskell, give a short explanation of the concepts with pointers (links) to more detailed texts (preferably on the wiki), and then go on to give the reader some idea about how and why this is all practically useful, maybe using one or two examples. +1 When I want to judge a programming language I like to see a gallery, a collection of beautiful programs. This shows me 1. what are the problems, the language developers want to tackle (does general purpose for the developers mean web, XML and data base processing or computationally intensive numerical stuff) 2. how do they solve them, i.e. what are the special features of the language and how do they help solving the problem, what style of programming does the language support. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
David Menendez wrote: Thomas Davie wrote: But the point is that this section of the site is the bit that's meant to be an advertisement -- we're trying to encourage people to read more, Are we? I thought Haskell.org was intended to describe what Haskell *is*. There are plenty of articles and blog posts and wiki pages out there that advocate Haskell. I don't see why the main web page needs to be polluted with marketing. Agreed! I hate marketing! The facts can speak for themselves, if you need somebody to explain them, then something's wrong. More specifically, fact means something that you can easily check yourself. Robust/maintainable/testable code are things you _can't_ easily check yourself without already learning the language. But shorter code is a fact you can easily check, for instance with quicksort as example. In fact, short code is the reason why I picked up Haskell. Back then, I was given the task to calculate some sequence of numbers which I did in one page of C code. So far so good, but when I asked the task assigner about his solution, he responded: Ah, this problem, that's 1 line in Haskell. Well, 2 lines if the terminal is too small. Such power! Hearing just this was more than enough reason for me to learn Haskell and to never look back. Regards, apfelmus ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
On Tue, 27 Nov 2007, apfelmus wrote: More specifically, fact means something that you can easily check yourself. Robust/maintainable/testable code are things you _can't_ easily check yourself without already learning the language. +1 But shorter code is a fact you can easily check, for instance with quicksort as example. In fact, short code is the reason why I picked up Haskell. Back then, I was given the task to calculate some sequence of numbers which I did in one page of C code. So far so good, but when I asked the task assigner about his solution, he responded: Ah, this problem, that's 1 line in Haskell. Well, 2 lines if the terminal is too small. Ah, a Haskell code contribution to the Encyclopedia of Integer Sequences? ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
Henning Thielemann wrote: apfelmus wrote: Back then, I was given the task to calculate some sequence of numbers which I did in one page of C code. So far so good, but when I asked the task assigner about his solution, he responded: Ah, this problem, that's 1 line in Haskell. Well, 2 lines if the terminal is too small. Ah, a Haskell code contribution to the Encyclopedia of Integer Sequences? The task was just for fun, but it's sequence A05. import Data.Set xs = let f x m = x:let y = x `div` 2 in f (if member y m then 3*x else y) (insert x m) in f 1 (singleton 0) As said, it's two lines if the terminal is too small :) Regards, apfelmus ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
On Nov 27, 2007 1:33 PM, apfelmus [EMAIL PROTECTED] wrote: David Menendez wrote: Thomas Davie wrote: But the point is that this section of the site is the bit that's meant to be an advertisement -- we're trying to encourage people to read more, Are we? I thought Haskell.org was intended to describe what Haskell *is*. There are plenty of articles and blog posts and wiki pages out there that advocate Haskell. I don't see why the main web page needs to be polluted with marketing. Agreed! I hate marketing! The facts can speak for themselves, if you need somebody to explain them, then something's wrong. More specifically, fact means something that you can easily check yourself. Robust/maintainable/testable code are things you _can't_ easily check yourself without already learning the language. But shorter code is a fact you can easily check, for instance with quicksort as example. In fact, short code is the reason why I picked up Haskell. Back then, I was given the task to calculate some sequence of numbers which I did in one page of C code. So far so good, but when I asked the task assigner about his solution, he responded: Ah, this problem, that's 1 line in Haskell. Well, 2 lines if the terminal is too small. Such power! Hearing just this was more than enough reason for me to learn Haskell and to never look back. Regards, apfelmus This is not a reasonable definition of fact. There are many facts which are not practical for a person to verify quickly, and many of them are quite important. It is perfectly reasonable to seek a consensus of experts on a subject, and it is perfectly reasonable to present information such as claims of robustness / maintainability / testability on the assumption that the person reading it will then take steps to verify the claims, generally by asking trusted experts. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
Henning Thielemann wrote: Now my idea was, that making links to glossary articles leaves the slogan as short as it is, and allows people to find out quickly about the words they still don't know. An explanation why Haskell's features are useful for programmers is still required. +1 But we'd probably need the glossary articles first before linking to them :) Regards, apfelmus ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
apfelmus wrote: But we'd probably need the glossary articles first before linking to them :) +12 I added added alpha, beta and eta conversion a while back. (And then some kind soul corrected it because half of what I wrote was actually *wrong*...) Anybody want to take a stab at all 15 kinds of morphisms? :-} ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
On Mon, 26 Nov 2007, Andrew Coppin wrote: apfelmus wrote: But we'd probably need the glossary articles first before linking to them :) +12 I added added alpha, beta and eta conversion a while back. (And then some kind soul corrected it because half of what I wrote was actually *wrong*...) Anybody want to take a stab at all 15 kinds of morphisms? :-} Let's start with polymorphism. :-) ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
Nervous? Anxious? You found an irreproducable bug in your program and have to fix it until tomorrow? You feel that your code needs essential cleanup, but you postponed it for long in order to not introduce new bugs? You can hardly maintain the code as it grows and grows? Pause a minute! Maybe we can help. Try Haskell. Its effect is immediate and long-lasting. There are warrantedly no side effects. It's scientifically approved. Available without prescription. I don't think it's so important to promote Haskell as to promote language diversity. In most environments, industrial or academic, people usually have to use one language because it's the standard language in the place. Once I had to use Fortran to write code just because teachers in that university believed Fortran is the best tool for numeric programming (and we can understand that, since they were never exposed to anything else). It would be nice if people understand that it's better to have one group using C++, other using Python and other using Haskell than a lot of people using the same language. Best, Maurício ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
On 2007-10-10, Andrew Coppin [EMAIL PROTECTED] wrote: (Indeed, the number of times my Haskell programs have locked up due to me accidentally writing let x = foo x...) For me, that's small. I have seen useful program not lock up that depend on let x = foo x though. -- Aaron Denney -- ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
On 10/8/07, Alex Tarkovsky [EMAIL PROTECTED] wrote: Alex Tarkovsky wrote: Brandon S. Allbery KF8NH wrote: I can has English? :) This comment inspired what could be either the beginning of an infectious Haskell recruitment campaign, or just a sign that some of us are mad. I present the lambdacats: http://arcanux.org/lambdacats.html The above site is now blogified, with RSS 2.0 feed madness: http://arcanux.org/lambdacats-feed.xml Aren't you going to make one featuring a catamorphism? =) -Brent ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
Brent Yorgey wrote: Aren't you going to make one featuring a catamorphism? =) Done, thanks for the contribution! ;) -- Alex Tarkovsky ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
On Tue, 9 Oct 2007, Alex Tarkovsky wrote: Brent Yorgey wrote: Aren't you going to make one featuring a catamorphism? =) Done, thanks for the contribution! ;) I wish concat or concatMap :-) ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
On 09/10/2007, Alex Tarkovsky [EMAIL PROTECTED] wrote: Brent Yorgey wrote: Aren't you going to make one featuring a catamorphism? =) Done, thanks for the contribution! ;) Goes to look... ...oh, very impressive! ;-) Lolcats seem to have reached a terrifying new nadir. D. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
On 10/9/07, Henning Thielemann [EMAIL PROTECTED] wrote: On Tue, 9 Oct 2007, Alex Tarkovsky wrote: Brent Yorgey wrote: Aren't you going to make one featuring a catamorphism? =) Done, thanks for the contribution! ;) I wish concat or concatMap :-) ask and ye shall receive! =) http://wso.williams.edu/~byorgey/concatMap.png ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
On 10/9/07, Andrew Coppin [EMAIL PROTECTED] wrote: Brent Yorgey wrote: On 10/9/07, *Henning Thielemann* [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] wrote: I wish concat or concatMap :-) ask and ye shall receive! =) http://wso.williams.edu/~byorgey/concatMap.png http://wso.williams.edu/%7Ebyorgey/concatMap.png Where do you guys find so many strange cat pictures?! well, I don't know where everyone else finds theirs, but I found mine on flickr. It turns out that cat owners with cameras are physically unable to resist uploading pictures of their cats in every imaginable situation. All you have to do is type something like 'cat banana' or 'cat map' into the search field, and voila! -Brent ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
Andrew Coppin wrote: Where do you guys find so many strange cat pictures?! You don't know any cats or cat owners, do you? ;) -- Alex Tarkovsky ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
On Sat, Oct 06, 2007 at 01:26:18PM -0500, Alex Tarkovsky wrote: ...and the silliness continues: In which case: http://pics.livejournal.com/resiak/pic/00019kx6/ Will signature.asc Description: Digital signature ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
Will Thompson wrote: http://pics.livejournal.com/resiak/pic/00019kx6/ Bravo. ;) And here's what happens when you substitute your cat for GHCi: http://arcanux.org/lambdacats3.html -- Alex Tarkovsky ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: New slogan for haskell.org
On Fri, 2007-10-05 at 20:19 +, Aaron Denney wrote: On 2007-10-05, Peter Verswyvelen [EMAIL PROTECTED] wrote: But where is the great IDE Haskell deserves??? :-) Seriously, 99% of the programmers I know don't want to look at it because when they see Emacs or VIM, they say what the f*ck, I don't want to go back to the stone age. If you want to attract more people that are inside the imperative-OO-with-nice-IDE-blob, create a great looking and functional IDE. Bluntly, I don't see why the Haskell community needs those sorts of programmers. Hear, hear. At the company I work for, all the code is perl/web development --- and we wouldn't dream of hiring one of those programmers. In fact, I think decreasing the number of those programmers in existence would be a good way to /increase/ the quantity and quality of the programs in existence; those are the sorts of programmers that, if they ever found a new career, we'd have to put three additional programmers out of a job just to break even. snip jcc ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
On 2007-10-05, Aaron Denney [EMAIL PROTECTED] wrote: On 2007-10-05, Peter Verswyvelen [EMAIL PROTECTED] wrote: But where is the great IDE Haskell deserves??? :-) Seriously, 99% of the programmers I know don't want to look at it because when they see Emacs or VIM, they say what the f*ck, I don't want to go back to the stone age. If you want to attract more people that are inside the imperative-OO-with-nice-IDE-blob, create a great looking and functional IDE. Bluntly, I don't see why the Haskell community needs those sorts of programmers. I like Haskell with a big enough community to have useful libraries, but a small enough community such that the language can readily evolve and serve as a useful research platform. This is not say that nice tools aren't useful or that we should be less than welcoming to anyone interested in Haskell. But the best tool that makes a language more useful is the language itself. If I don't have as much boilerplate all over the place, then I don't need a tool that goes and finds all this boilerplate and changes it. When the language manages memory for me, I don't need valgrind. If I write a program that can't crash, I don't need crash-analysis tools. If my programs minimize state-change, I have less need of traditional debuggers with watchpoints and breakpoints. If my functions are guaranteed by the compiler to be pure, /semantic/ debuggers, that algebraicly manipulate definitions and can iteratively zero in on meanings being wrong rather than just implementations glitching become useable. When I can autogenerate test data for my functions based solely on the type, testing can be much easier. We already have a lot of nice tools that do what we want. Slapping a GUI on them and maintaining integration while they're evolving is less useful to me than programmers exploring other additional useful tools. -- Aaron Denney -- ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: New slogan for haskell.org
Brandon S. Allbery KF8NH wrote: I can has English? :) This comment inspired what could be either the beginning of an infectious Haskell recruitment campaign, or just a sign that some of us are mad. I present the lambdacats: http://arcanux.org/lambdacats.html -- Alex Tarkovsky ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe