Re: [Haskell-cafe] Haskell Weekly News

2010-09-09 Thread Joe Fredette

I miss it too,

I've got one person set up (or in the process of setting up) to take  
it over. I'll be happy to help anyone else get set up (the tools are  
nontrivial to use at first). The current plan, when I finally get back  
on my feet, is to have multiple editors trading off weeks/months/ 
timeframetobedetermined to minimize downtime such as this. I would  
like to really apologize to the community, I had thought I had the  
problems fixed, then I ran into some financial difficulties, and  
couldn't finish fixing the machine. Pride kept me from asking for  
someone to take over the HWN in my absence, that was silly, you guys  
would (as I can see) have jumped at the chance to help. Please send me  
an email if you'd like to help, I have a little tutorial tome I can  
forward you that will get you set up, and we can work out a schedule  
with the other editor(s).


Having 5 or 6 editors to cycle through will be ideal, I think, that  
way we have a fair amount of redundancy to prevent situations like this.


/Joe

On Sep 9, 2010, at 10:35 AM, Malcolm Wallace wrote:


I miss the Haskell Weekly News.

The most recent issue was published on 8th March 2010.  The  
volunteer who produces it claimed on 27th April that he would be  
back in action soon, implying that once a couple of weeks' worth  
of university classes were finished, HWN would return.


So in the absence of any visible movement, and it now being Sept,  
can I appeal for a new volunteer to take over?  There is more info  
here:


   http://www.haskell.org/haskellwiki/HWN

Regards,
   Malcolm

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


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


Re: [Haskell-cafe] Haskell Weekly News?

2010-06-23 Thread Joe Fredette
Yah, this is gonna sound like a crappy thing -- but my computer is  
still broken. What I thought was a faulty SATA port seems to actually  
be an issue with the harddrive, so -- one more week is the punchline.  
I'm really sorry guys...



/Joe

On Jun 23, 2010, at 10:13 AM, aditya siram wrote:


Neat. Thanks!
-deech

On Wed, Jun 23, 2010 at 10:06 AM, Vo Minh Thu not...@gmail.com  
wrote:

2010/6/23 aditya siram aditya.si...@gmail.com:

I haven't seen HWN in a while. If there is still community interest,
how can we help you with this?


It will come back, see this thread:
http://www.reddit.com/r/haskell/comments/cdw38/hwn_it_will_be_back_promise/

Cheers,
Thu



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


Re: [Haskell-cafe] Haskell Weekly News?

2010-04-28 Thread Joe Fredette
While I would not be opposed to being paid, I don't think it's at all  
necessary or even really appropriate. I liken the job to volunteering  
at a local community action group -- not really the kind of thing you  
get paid for.


That said, if any of you have time machines/time dilation devices in  
the works, I'm happy to beta test.


One more week...

/Joe

On Apr 28, 2010, at 2:40 AM, David Virebayre wrote:

On Wed, Apr 28, 2010 at 7:47 AM, David Sankel cam...@gmail.com  
wrote:
I'm wondering if a monetary incentive would keep the person who  
does this

work more accountable. I personally would be willing to contribute to
continue getting this service. I wonder if there are others as well.


I don't think money would be an incentive for someone that has 7
classes worth of finals and papers to do

Now a time machine.


David.


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


Re: [Haskell-cafe] Haskell Weekly News?

2010-04-26 Thread Joe Fredette

Hehe,

 Mostly, at the moment, as I mentioned to Deech, what is holding me  
up is trying to get HWN and 7 classes worth of finals and papers done.  
This is the last two weeks of my last semester, but it should be all  
done soon.


 I hope to get HWN out shortly after it's all finished up. I shall  
return!


/Joe

On Apr 26, 2010, at 7:54 PM, Ivan Miljenovic wrote:


On 27 April 2010 08:08, aditya siram aditya.si...@gmail.com wrote:

Hi all,
I haven't seen a Haskell Weekly News in a while. Is there  
anything I

can do to help?


My guess is do John's marking, etc. for him so that he has some time
to do the HWN!

We also want him to avoid this situation: http://ro-che.info/ccc/06.html 
 :p


--
Ivan Lazar Miljenovic
ivan.miljeno...@gmail.com
IvanMiljenovic.wordpress.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


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


Re: [Haskell-cafe] Haskell Weekly News?

2010-04-26 Thread Joe Fredette
Most certainly, the HWN is easy to put together, it's just a little  
time consuming, the weekly schedule is just enough under a normal 40- 
hour courseload. When that number jumps into the high billions (as it  
did this last semester), it becomes someone more difficult to fit in.


HWN will always be HWN, at least as long as I can keep it that way. :D

/Joe


On Apr 26, 2010, at 8:17 PM, Ivan Miljenovic wrote:


On 27 April 2010 10:08, Joe Fredette jfred...@gmail.com wrote:
 I hope to get HWN out shortly after it's all finished up. I shall  
return!


As long as you don't end up copying the Gentoo situation where the
Gentoo Weekly News died, was resurrected (not sure how many times),
was converted to the Gentoo Monthly News to make it simpler, and then
became the Gentoo Never News (hey, GNN sounds kinda catchy, though not
as good as C :p).

--
Ivan Lazar Miljenovic
ivan.miljeno...@gmail.com
IvanMiljenovic.wordpress.com


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


Re: [Haskell-cafe] instance Eq (a - b)

2010-04-14 Thread Joe Fredette
Consider the set of all rationals with 1 as a numerator, and positive  
denominator, eg:


S = {1/n, n : Nat}

this is bounded, enumerable, but infinite. Which makes the whole  
checking every value bit somewhat, shall we say, difficult. :)


So for instance, we want to show

f : S - S
f(1/n) = 1/2n

and

g : S - S
g(1/n) = 1/2 * 1/n

would be impossible. Since we would have to check infinitely many  
values of `n`


This, of course, presumes I have understood everything, which seems to  
be less likely every day.



On Apr 14, 2010, at 2:03 AM, Ashley Yakeley wrote:


Why isn't there an instance Eq (a - b) ?

 allValues :: (Bounded a,Enum a) = [a]
 allValues = enumFrom minBound

 instance (Bounded a,Enum a,Eq b) = Eq (a - b) where
   p == q = fmap p allValues == fmap q allValues

Of course, it's not perfect, since empty types are finite but not  
Bounded. One can nevertheless make them instances of Bounded with  
undefined bounds, and have enumFrom and friends always return the  
empty list.


It seems one should also be able to write

 instance (Bounded a,Enum a) = Traversable (a - b) where ???

But this turns out to be curiously hard.

--
Ashley Yakeley

___
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] Hackage accounts and real names

2010-04-05 Thread Joe Fredette
Exactly, it's not like the Hackage people are doing extensive  
background checks of everyone, they just want something consistent.


You guys don't _really_ think my name is Joe Fredette, right?

I'm actually Batman.

/Joe

On Apr 4, 2010, at 7:58 PM, Jesper Louis Andersen wrote:


On Mon, Apr 5, 2010 at 1:49 AM, Brandon S. Allbery KF8NH
allb...@ece.cmu.edu wrote:

Some people are paranoid about such things, for example because it  
would
allow people to google-mine for things they'd rather a random HR  
person not

reading by linking names together.


In addition, the concept is rather silly, as one can just take a
pseudonym without any of us knowing:

Whats new:
Thu Apr 1 13:37:00 UTC 2010  NicolasBourbaki   algebre-1.0

History is ripe with examples of this.

--
J.
___
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] Hackage accounts and real names

2010-04-05 Thread Joe Fredette
Unfortunately, Ivan, it's not so much the Whenever-I-can-be-bothered  
and more the Joe-had-4-finals-in-2-weeks-and-3-papers-to-write. HWN  
should be back shortly.


Come Summertime, I suspect all of these delays will stop, but with a 7  
class semester, something's gotta give.


/Joe


On Apr 5, 2010, at 4:52 AM, Ivan Lazar Miljenovic wrote:


Joe Fredette jfred...@gmail.com writes:

You guys don't _really_ think my name is Joe Fredette, right?

I'm actually Batman.


Batman, Joe, whatever your name is...

I notice that the HWN has turned into the Haskell
Whenever-I-can-be-bothered-getting-around-to-it News... _

--
Ivan Lazar Miljenovic
ivan.miljeno...@gmail.com
IvanMiljenovic.wordpress.com


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


Re: [Haskell-cafe] Hackage accounts and real names

2010-04-05 Thread Joe Fredette

Thats what I _want_ you to think. :)


On Apr 5, 2010, at 10:28 AM, Ivan Lazar Miljenovic wrote:


Joe Fredette jfred...@gmail.com writes:

Unfortunately, Ivan, it's not so much the Whenever-I-can-be-bothered
and more the Joe-had-4-finals-in-2-weeks-and-3-papers-to-write. HWN
should be back shortly.


Hang on, I thought your name was Batman, not Joe...

--
Ivan Lazar Miljenovic
ivan.miljeno...@gmail.com
IvanMiljenovic.wordpress.com


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


[Haskell-cafe] HWN Issue 148 -- unicode error

2010-01-31 Thread Joe Fredette


Indeed, the Unicode only made it through my system, and not the mailer  
itself. In fact, the name should look something like Ćwikłowski,  
and not the garbled mess that made it through. Apologies again, Bartek!



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


Re: [Haskell-cafe] Haskell Weekly News: Issue 142 - December 13, 2009

2009-12-13 Thread Joe Fredette
English, while my first language (and in fact, only language...) is  
also my worst language... Thanks for catching the grammar snafu.


While I'm here, please note that the issue number is off as well, it's  
fixed in the version on sequence.complete.org, but not in the email  
version.


/Joe

On Dec 13, 2009, at 7:03 PM, Erlend Hamberg wrote:


Hi,

First and foremost; thanks for your work on the HWN. It is greatly
appreciated. :)

Just a quick tip:

On Monday 14. December 2009 00.45.29 jfred...@gmail.com wrote:

Until next week, Haskeller's, […]
why we Haskeller's […]


Both of these refer to many “haskellers” – no apostrophe should be  
put before
the ‘s’ as that would mean *one* haskeller having something. (“A  
haskeller's

best friend”.)

--
Erlend Hamberg
Everything will be ok in the end. If its not ok, its not the end.
GPG/PGP:  0xAD3BCF19
45C3 E2E7 86CA ADB7 8DAD 51E7 3A1A F085 AD3B CF19
___
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] Zumkeller numbers

2009-12-07 Thread Joe Fredette
Here's a completely naive implementation, it's slow as cold molasses  
going uphill during a blizzard, but it doesn't seem to be wrong. I let  
it run in the interpreter for the last 3 minutes or so and it's  
reproduced the given list up to 126 (and hasn't crapped out yet).


I imagine there's probably a less naive algorithm that could be done,  
but I rather like the straightforwardness of this one...


/Joe





module Main where
import Control.Monad(filterM)
import Data.List(sort)


divisors :: Int - [Int]
divisors n = [d | d - [1..n], n `mod` d == 0]

powerset = filterM (const [True, False])

() :: Eq a = [a] - [a] - [(a,a)]
x  y = [(x', y') | x' - x, y' - y, x' /= y']

(/\) :: Eq a = [a] - [a] - Bool
x /\ y = null $ filter (`elem` x) y

prod m n = filter (uncurry (/\)) (m  n)

eqSum :: ([Int], [Int]) - Bool
eqSum (m, n) = sum m == sum n


containsAllDivisors i l = filter (\x - (sort . uncurry (++) $ x) ==  
divisors i) l


zumkeller :: Int - [([Int], [Int])]
zumkeller n = containsAllDivisors n . filter eqSum . (\x - prod x x)  
$ allParts

where divs = divisors n
  allParts = powerset divs

zumkellerP :: Int - Bool
zumkellerP = not . null . zumkeller


---
On Dec 7, 2009, at 4:33 PM, Frank Buss wrote:

Anyone interested in writing some lines of Haskell code for  
generating the Zumkeller numbers?


http://www.luschny.de/math/seq/ZumkellerNumbers.html

My C/C# solutions looks clumsy (but is fast). I think this can be  
done much more elegant in Haskell with lazy evaluation.


Not related to Haskell, but do you think semi-Zumkeller numbers are  
semi-perfect numbers? Maybe some Haskell code for testing it for  
some numbers?


--
Frank Buss, f...@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de


___
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] Finding HP

2009-12-03 Thread Joe Fredette
I think it makes sense, the HP is supposed to set up the entire  
environment needed for typical haskell development (at least, that is  
my understanding). As such, what's the point in making downloading  
haskell mean downloading a single _peice_ of haskell (GHC) only to  
have to download _everything else anyway_ (cabal-et-al, various  
standard libraries, etc).


Perhaps we could put it to some kind of community vote.

/Joe

On Dec 3, 2009, at 11:43 AM, Don Stewart wrote:


vandijk.roel:

On Wed, Dec 2, 2009 at 11:44 PM, Gregory Crosswhite
gcr...@phys.washington.edu wrote:
On a more serious note, Download Haskell /= Download Haskell  
Platform, so if I were glancing down the sidebar looking for a  
link to download the Haskell Platform then the first link  
wouldn't have registered for me.  And putting a X has been  
released link! in the news does not count as a prominent download  
link.


If I wanted to know something *about* the *Haskell Platform* I would
click the link The Haskell Platform under the section About. So it is
actually mentioned 3 times on the front page. What could be improved
are the 2 download links: Download Haskell and Download GHC. It
would perhaps be better to have one nice big Download button that
takes you to a separate download page.


Having a single download link that only points to the Haskell Platform
would be a bit of a policy shift. Is the community ready to accept  
that

users looking for Haskell should be given the HP binaries?

If so, I can change it to have a single Download button. Though it
might be preferable to do that after the next release (the first
non-beta release).

-- Don
___
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] Card games

2009-12-03 Thread Joe Fredette

Yah! We like helping!

On Dec 3, 2009, at 2:37 PM, Daniel Fischer wrote:


Am Donnerstag 03 Dezember 2009 19:23:24 schrieb Tom Tobin:

2009/12/3 Matthias Görgens matthias.goerg...@googlemail.com:

Hi Tom,

Did you make any progress on your Dominion quest?  I guess you could
start by modeling `Big Money' and add the other cards (and
interaction) from there.


No, I'm still trying to tune a partitionM function I wrote.


Maybe we can help?

(I'm still a beginner.)  ^_^  I'd like to write a Dominion library  
or some

more generic superset at some point, though.


___
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] Is Haskell a Fanatic?

2009-12-03 Thread Joe Fredette

I think you meant to say:


 Now is the winter of our discontent with this troll
 made glorious summer by this son of Fischer.


So long as we bastardize the bard, we best bastardize him fully! :)

/Joe

On Dec 3, 2009, at 2:58 PM, Miguel Mitrofanov wrote:


Brilliant. Just brilliant.

On 3 Dec 2009, at 22:54, Daniel Fischer wrote:


Am Donnerstag 03 Dezember 2009 19:14:40 schrieb Stefan Holdermans:

John, Miguel (and others),


Don Stewart wrote, the guarantees of purity the type system
provides are extremely
useful for verification purposes. My response to this is in
theory. This is what caught my attention initially, but the
language lacks polish and does not appear to be going in a
direction where it shows signs where it will self-correct. It may
even be beyond repair. I care about others and I don't want people
to be misled. [...]


The burden of proof is on you to demonstrate that it _is_.


I admit it's tempting, but wouldn't you agree that, especially in  
this

case, it's better not to feed the troll?


To feed, or not to feed: that is the question:
Whether 'tis nobler in the mind to suffer
The quips and ramblings of outrageous trolling,
Or to take arms against a sea of nonsense,
And by opposing end them?



Cheers,

 Stefan



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


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


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


Re: [Haskell-cafe] Is Haskell a Fanatic?

2009-12-03 Thread Joe Fredette

The Mayan's Set 'em up, Haskellers knock them down...


On Dec 4, 2009, at 1:36 AM, Evan Laforge wrote:

I'd just like to point out or reiterate the odd rise in trolling  
and the

recent announcements of haskell-2010...


Just wait until haskell-2012 is announced with nonexistential aka
eschatological types spelled notany a. World.

It evaluates to a new form of bottom that blackholes the entire  
world...

___
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] HWN This week

2009-11-28 Thread Joe Fredette

Hey folks,

 I'm at home this weekend, and the internet is somewhat dodgey, so  
I'm going to delay the special Thanksgiving episode of the HWN till  
sunday afternoon...


 I suppose the Turkey-coma isn't helping either, but I'll never admit  
it...



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


Re: [Haskell-cafe] Re: Haskell Weekly News: Issue 140 - November 22, 2009

2009-11-23 Thread Joe Fredette
I censored it because I intend the HWN to be a PG rated article. I  
figure -- while I am not under any delusion that kids these days have  
mouths fouler than mine, which is a feat for sure -- that some young  
programmer with strict speaking morals may stumble upon the HWN and say,


 Hey self! This is a fantastically written weekly newsletter  
concerning
 recent developments in this community, and did I mention how  
wonderfully

 written it is?

I should want said programmer to not feel any offense that can be  
easily avoided by a single * here or !...@#$ there.


Generally I'm opposed to censorship -- but that generally entails an  
authority censoring against the will of the author, I think that in  
this case -- as I am the author/editor (not of the post proper, but  
rather the conduit to the post) -- that censorship-self-inflicted  
doesn't really count.


I guess my view is that such a paper with an unintentionally foul- 
mouthed name -- like Brainf*ck -- ought not be the reason for which  
your paper is rejected from a journal or other publication source, but  
rather it should be understood that it might be mildly censored (as I  
did) if it is publish, in accordance with the intended audience of the  
publication source.


/Joe


On Nov 23, 2009, at 9:35 PM, Benjamin L.Russell wrote:


On Sat, 21 Nov 2009 12:14:29 -0800 (PST), jfred...@gmail.com wrote:


 Typef*ck: Brainf*ck in the type system. Johnny Morrice [23]showed us
 his implementation of everyone's favorite profane programming
 language... in the type system.


Incidentally, I've always wondered about the politically correct way
of referring to this programming language (and related implementation
in the above-mentioned type system) in academic circles; if I were
writing a paper for submission to an academic journal, should I place
priority on accuracy or propriety?  In general, for what kinds of
publications should I prioritize one criterion over the other?

In general, if a programming language-related term contains what is
generally regarded as a profane word as a component, for what kinds of
written material should I prioritize accuracy vs. propriety?

-- Benjamin L. Russell
--
Benjamin L. Russell  /   DekuDekuplex at Yahoo dot com
http://dekudekuplex.wordpress.com/
Translator/Interpreter / Mobile:  +011 81 80-3603-6725
Furuike ya, kawazu tobikomu mizu no oto.
-- Matsuo Basho^ 


___
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] Typefuck: Brainfuck in the type system

2009-11-16 Thread Joe Fredette
Awesome, however, I don't know what the policy is for such --  
interesting -- names on Hackage. Normally I believe the response to  
Should I put it on Hackage is a resounding, immediate Absolutely.  
In this case, perhaps a small name change to avoid any possibility of  
offense?


/Joe



On Nov 16, 2009, at 12:19 PM, Johnny Morrice wrote:


Greetings list,

I was um well, drinking beer and thought it would be amusing to  
write a

brainfuck interpreter which runs within the GHC type checker so I did,
using type families.

I haven't decided whether or not to put it on hackage (it is rather
silly after all) but I have a link to a cabalized package and
instructions on how to work it in an entry on my blog, here:
http://killersmurf.blogspot.com/2009/11/typefuck.html

Enjoy the ridiculousness.

Johnny

___
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] Typefuck: Brainfuck in the type system

2009-11-16 Thread Joe Fredette
Well then, send it up to the great Hackage machine! If the f-bombs are  
allowed...


I think my package names are about to get alot less SFW...



On Nov 16, 2009, at 12:26 PM, Gwern Branwen wrote:

On Mon, Nov 16, 2009 at 12:23 PM, Joe Fredette jfred...@gmail.com  
wrote:
Awesome, however, I don't know what the policy is for such --  
interesting --
names on Hackage. Normally I believe the response to Should I put  
it on
Hackage is a resounding, immediate Absolutely. In this case,  
perhaps a

small name change to avoid any possibility of offense?

/Joe


Too late:
http://hackage.haskell.org/package/brainfuck
http://hackage.haskell.org/package/loli

--
gwern


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


[Haskell-cafe] The weirdest error I've ever seen...

2009-11-12 Thread Joe Fredette

Hiya Haskellers,

	So there I was, punching away at the keys, working on the Haskell  
Weekly News tools when the solution to one of my problems fell on me  
like a ton of lambdas. The solution and problem it solved are  
immaterial, but suffice to say it involved the combination of  
associated types and monad transformers, as well as some fancy  
deriving to end up with this code:


#

type Context = ReaderT Email
type Match t = StateT t IO
type ContextMatch t a = Context (Match t) a

newtype FilterState t = Filter t a = Filter (ContextMatch t a)
   deriving (Functor, Monad, MonadReader Email, MonadState Bool,  
MonadIO)


class FilterState t where
data FState t
deliver :: FState t - IO ()

#

Again, the fine details are unimportant, but the punchline is `Filter`  
is a Monad which houses not only results, but also an internal state  
which will be used in the delivery of emails in some yet-to-be- 
determined way. Naturally, I want to use `deriving` to turn this puppy  
into a monad over it's second argument. In fact, the whole thing kind- 
checks  alright, but presents me with this, the titular 'weirdest  
error I've ever seen...'


#

[1 of 3] Compiling Network.HackMail.Email.ParseEmail ( Network/ 
HackMail/Email/ParseEmail.hs, interpreted )
[2 of 3] Compiling Network.HackMail.Email.Email ( Network/HackMail/ 
Email/Email.hs, interpreted )
[3 of 3] Compiling Network.HackMail.Filter.Filter ( Network/HackMail/ 
Filter/Filter.hs, interpreted )

*** Exception: No match in record selector Var.tcTyVarDetails

#

Now, there are three tickets open on the GHC trac, found for me by the  
ever-helpful `copumpkin` on #haskell -- because I didn't think to look  
-- they are numbers 3621, 3422 and 2714. But none of them are  
sufficiently close to my case for them to make sense to me, nor are  
the solutions presented suitable for entry into my feeble noggin.  
(Thats just a purty way of saying I'm not smart enough to understand  
what any of it means...) So I beseech my fellow Haskellers[1], What  
the heck did I do to anger the Var.tcTyVarDetail gods?


My guess (given what I can glean from the Trac entries) is that the  
`deriving ... MonadState ...` needs changing in some specific-yet- 
cryptic way, but I've only got my gut to go on...



For the Record, and in the event it matters...

[jfred...@erdos]$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 6.10.4
[jfred...@erdos]$ uname -a
	Linux Erdos 2.6.31-ARCH #1 SMP PREEMPT Fri Oct 23 11:12:58 CEST 2009  
i686 Intel(R) Celeron(R) CPU 3.06GHz GenuineIntel GNU/Linux



Thanks in advance for any help offered.

 /Joe

[1] Bet you've never been beseeched before... 
___

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


Re: [Haskell-cafe] The weirdest error I've ever seen...

2009-11-12 Thread Joe Fredette
Okay, so -- I feel totally awesome -- I never found a GHC bug  
before... and a Haskell Celebrity responded to my post! *swoons* :)


Serious question now, There's a fair amount of definitely irrelevant  
code (like the definition of the `Email` type, etc), should I post  
that in the report too (assuming it doesn't work in 6.12 or I can't  
get 6.12 working to try it)?


Thanks,

/Joe

On Nov 12, 2009, at 4:07 AM, Simon Peyton-Jones wrote:


| [1 of 3] Compiling Network.HackMail.Email.ParseEmail ( Network/
| HackMail/Email/ParseEmail.hs, interpreted )
| [2 of 3] Compiling Network.HackMail.Email.Email ( Network/HackMail/
| Email/Email.hs, interpreted )
| [3 of 3] Compiling Network.HackMail.Filter.Filter ( Network/ 
HackMail/

| Filter/Filter.hs, interpreted )
| *** Exception: No match in record selector Var.tcTyVarDetails

This is a bug in GHC without a doubt.

It's possible that it's fixed in 6.12 -- can you try the release  
candidate?  If it is not fixed, or if it's too hard for you to try,  
can you submit a Trac bug report please? (Include your code, and  
instructions for how to reproduce.


Thanks

Simon


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


Re: [Haskell-cafe] The weirdest error I've ever seen...

2009-11-12 Thread Joe Fredette

Actually, I just solved the problem... I think...

In my original code, I had the newtype:


  newtype FilterState t = Filter t a = Filter (ContextMatch t a)
  deriving (Functor, Monad, MonadReader Email, MonadState Bool,  
MonadIO)


I was trying to confirm that it actually was the `deriving ...  
MonadState Bool ...` part that was causing the problem, and then I  
realized, it's not `MonadState Bool` I want, it's `MonadState t`.


Upon changing that, everything compiles fine and ghc hums along happily.

Should I still submit a bug report for a bad error message?

/Joe

On Nov 12, 2009, at 12:58 PM, Joe Fredette wrote:

Okay, so -- I feel totally awesome -- I never found a GHC bug  
before... and a Haskell Celebrity responded to my post! *swoons* :)


Serious question now, There's a fair amount of definitely irrelevant  
code (like the definition of the `Email` type, etc), should I post  
that in the report too (assuming it doesn't work in 6.12 or I can't  
get 6.12 working to try it)?


Thanks,

/Joe

On Nov 12, 2009, at 4:07 AM, Simon Peyton-Jones wrote:


| [1 of 3] Compiling Network.HackMail.Email.ParseEmail ( Network/
| HackMail/Email/ParseEmail.hs, interpreted )
| [2 of 3] Compiling Network.HackMail.Email.Email ( Network/HackMail/
| Email/Email.hs, interpreted )
| [3 of 3] Compiling Network.HackMail.Filter.Filter ( Network/ 
HackMail/

| Filter/Filter.hs, interpreted )
| *** Exception: No match in record selector Var.tcTyVarDetails

This is a bug in GHC without a doubt.

It's possible that it's fixed in 6.12 -- can you try the release  
candidate?  If it is not fixed, or if it's too hard for you to try,  
can you submit a Trac bug report please? (Include your code, and  
instructions for how to reproduce.


Thanks

Simon




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


Re: [Haskell-cafe] What does the `forall` mean ?

2009-11-11 Thread Joe Fredette
Forall means the same thing as it means in math, it means for any  
type -- call it `b` -- then the type of the following it `Branch  
(PermParser tok st (b - a)`


`tok`, `st` and `a` are all given by the declaration of the datatype  
itself.


Hope that makes sense,

/Joe

On Nov 11, 2009, at 7:24 PM, zaxis wrote:



import Text.ParserCombinators.Parsec

data PermParser tok st a = Perm (Maybe a) [Branch tok st a]
data Branch tok st a = forall b. Branch (PermParser tok st (b -  
a))

(GenParser tok st b)

I have hoogled the `forall` but i cannot find any appropriate answer!

thanks!

-
fac n = foldr (*) 1 [1..n]
--
View this message in context: 
http://old.nabble.com/What-does-the-%60forall%60-mean---tp26311291p26311291.html
Sent from the Haskell - Haskell-Cafe mailing list archive at  
Nabble.com.


___
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] O'Haskell

2009-11-09 Thread Joe Fredette
That sounds vaguely ominous... Sir, we've achieved reactive in  
O'Haskell, we'll have ten minutes till the VB GUI detects his IP  
address!


...

But in all seriousness, it is my understanding that O'Haskell has  
fallen into disuse. IIRC Timber is the spiritual successor, but I have

no idea how accurate that information is.

As for implementing reactive in such a language, I imagine it would be  
pretty easy, as FRP is a _functional_ (hence the name) construct.
Objects ought only get in the way (assuming they introduce possibly  
conflicting syntax)



/Joe

On Nov 9, 2009, at 7:17 AM, shengwang wrote:


Hi,

Somebody has idea, how to achieve reactive in O'Haskell?


Shawn Wang

使用新一代 Windows Live Messenger 轻松交流和共享! 立刻下载!  
___

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] classes question

2009-11-09 Thread Joe Fredette
(+) is a name that is already taken by the Num typeclass, you're  
trying to overload it with a different class. It's equivalent to doing:


foo :: Int
foo = 1

foo :: String
foo = abc


this would cause an (obvious) namespace collision. If you want to  
redefine (+), you'll have to import a qualified prelude, by using the  
NoImplicitPrelude

pragma and `import qualified Prelude`.

A better alternative is to use a different name, `+`, `++` are both  
taken (for normal addition and list concatenation, resp.).


/Joe


On Nov 9, 2009, at 1:44 PM, Paul Tokarev wrote:



Hi.

I am using Hugs 98
I have that piece of code:

class PlusTimes a where
  plus :: a - a - a

instance PlusTimes Int where
  plus x y = x + y

when I run : plus 2 3 I get this error:
ERROR - Unresolved overloading
*** Type   : (Num a, PlusTimes a) = a
*** Expression : plus 2 3

What am I doing wrong?
Thanks.

--
View this message in context: 
http://old.nabble.com/classes-question-tp26271257p26271257.html
Sent from the Haskell - Haskell-Cafe mailing list archive at  
Nabble.com.


___
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] classes question

2009-11-09 Thread Joe Fredette

Oh, crap, I'm sorry, I completely misread your post...

Disregard my previous message.


/Joe

On Nov 9, 2009, at 1:44 PM, Paul Tokarev wrote:



Hi.

I am using Hugs 98
I have that piece of code:

class PlusTimes a where
  plus :: a - a - a

instance PlusTimes Int where
  plus x y = x + y

when I run : plus 2 3 I get this error:
ERROR - Unresolved overloading
*** Type   : (Num a, PlusTimes a) = a
*** Expression : plus 2 3

What am I doing wrong?
Thanks.

--  
View this message in context: http://old.nabble.com/classes-question-tp26271257p26271257.html
Sent from the Haskell - Haskell-Cafe mailing list archive at  
Nabble.com.


___
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] Card games

2009-11-07 Thread Joe Fredette
You might peek at my library HCard (it's on Hackage), it uses  
associated datatypes to allow for a very
general playing-card interface. It was only ever a toy to play w/  
Assoc. types for me, but I imagine it
could be a decent starting point for someone interested in turning it  
into a real EDSL. It's got a

cribbage counter example program bundled with it.

/Joe



On Nov 7, 2009, at 5:54 AM, Felipe Lessa wrote:


Hi!

I would like to know if anybody has already thought of or tried
to code an EDSL for card games.  Ideally you should be able to
write the rules the games and get for free:

- Game generator: given an input deck, construct the initial
  state of the game.

- Random game generator: besides just creating a random deck and
  using the item above, it should be nice to be able to randomly
  construct the game from the final positions.  This should
  guarantee that all random games are solvable.

- Hints generator: IOW list possible moves given a game state.

- Playable game: probably the EDSL should include at least some
  information to be able to properly place the cards on the
  screen.

- Game solver: this is somewhat harder to do efficiently, but an
  inneficient one should be doable.

- Demo mode: related to the above, an auto-play distract-me mode.

- Tutorial mode: show a screen for each of the rules written?

- ...anything more?

Just curious, this looks like a perfect job for an EDSL.  Also, I
guess anybody trying to do something like this should read
PySol's code to have some ideas.

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


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


Re: [Haskell-cafe] Re: proposal: point free case expressions

2009-11-05 Thread Joe Fredette
Don't these things generally get added as LANGUAGE pragmas though? If  
it's off by default then peoples code should be okay.


Also, I'd prefer something like `cases` as the keyword, rather than  
`case of`, mostly for aesthetics, but also so that, upon visual  
inspection, I wouldn't wonder where the pattern went and potentially  
try to 'fix the point-free case match.


/Joe




On Nov 5, 2009, at 1:09 PM, Edward Kmett wrote:

On Thu, Nov 5, 2009 at 10:59 AM, Stefan Monnier monn...@iro.umontreal.ca 
 wrote:
 We could really use a case statement in which we skip the  
scrutinee and make

 (case of {})' be syntactic sugar for `(\x - case x of {})'.

 So we could write:

 myFunc = anotherFunc $ case of
 Left err - print err
 Right msg - putStrLn msg

 A minor syntactical addition, a big win!

Since this case really defines a function, it seems like it would  
make

more sense to allow defining anonymous functions by pattern matching.
I.e. instead of case of, I think it should use λ, \, fn,  
or ...


The problem with all of those options is that they introduce a new  
keyword into the language and can potentially break existing code.


Eugene's \{ } avoids that by using a different hole in the grammar,  
but at the expense of 'un-Haskelly' braces. That and I question how  
easy it would be to get to parse, because a common idiom seems to be  
to parse patterns as expressions before converting them to patterns  
to avoid certain other ambiguities in the grammar, so this requires  
a { } expression, which may introduce a lot more ambiguity and  
problems to the grammar than it would seem at first glance.


-Edward Kmett
___
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] What's the deal with Clean?

2009-11-03 Thread Joe Fredette
Given the Shootout results, the difference is a matter of a few  
seconds. If Clean Programmers need those few extra seconds, they're  
welcome to them.


We're Lazy around here. :)

/Joe


On Nov 4, 2009, at 12:16 AM, Gregory Crosswhite wrote:

So I take it you are saying that it really *cleans* Haskell's clock  
when it comes to speed?  ;-)


- Greg


On Nov 3, 2009, at 9:04 PM, Richard O'Keefe wrote:



On Nov 4, 2009, at 9:30 AM, Deniz Dogan wrote:
So what's the deal with Clean? Why is it preferable to Haskell?  
Why is it not?


(1) Speed.
(2) If you are a Windows developer, the fact that Windows is the  
primary

  platform and others (even Mac OS, which is historically ironic) are
  second- (or in the case of Solaris) third-class citizens.
(3) Did I mention speed?
(4) It comes with its own IDE.  I don't think it can do anything  
much that
  Haskell tools can't do, but if you don't like looking for things,  
it's

  a help.
(5) Plus of course there's speed.
(6) They're working on a Haskell front end, so you won't actually  
have to

  choose.  (Anyone doing a Clean front end for Haskell?)
(7) Haskell now has bang-patterns so you can specify (a bound on)  
intended
  strictness when you declare a function.  But that's not in  
Haskell 98.
(8) As a result of this, speed is a bit more declarative than  
adding

  $! in strange places.
(9) There's a theorem prover for Clean, called Sparkle.
  Sadly, it's Windows-only, but we all know what most computers on  
the

  planet run, don't we?  (It's probably Symbian, actually.)
(10) And finally, of course, there's speed.  Did I mention that?



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


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


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


Re: [Haskell-cafe] Re: Haskell Weekly News: Issue 137 - October 31, 2009

2009-11-02 Thread Joe Fredette

It's not my fault you emacs-y people chose the wrong editor... :)


/Joe

On Nov 1, 2009, at 11:42 PM, Benjamin L.Russell wrote:


On Fri, 30 Oct 2009 21:38:25 -0700 (PDT), jfred...@gmail.com wrote:



... a new version of
 haskell-mode for the lesser of two editors

^^


[...]

 haskell-mode 2.5. Svein Ove Aas [14]announced a new version of
 haskell-mode for that other 'editor'...

   ^  ^

Hey, careful now No need to start another Emacs vs. the other
'editor' flamewar ... lest someone run M-x nethack and summon a
Demogorgon against you ... er, make that M-x haskellhack, since a
Haskell version needs to be created. ;-)

-- Benjamin L. Russell
--
Benjamin L. Russell  /   DekuDekuplex at Yahoo dot com
http://dekudekuplex.wordpress.com/
Translator/Interpreter / Mobile:  +011 81 80-3603-6725
Furuike ya, kawazu tobikomu mizu no oto.
-- Matsuo Basho^ 


___
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] Is there in Haskell the eval function?

2009-10-22 Thread Joe Fredette
You may also want to look at Dyre. It does dynamic recompilation of  
source files. Depending on your application, hint may not be what you  
need. Eg, if you're trying to build something like lambdabot's  
interpreter, then Hint is probably on the right track, if you just  
want to use Haskell-as-configuration file (a la xmonad), then Dyre is  
probably a better (or at least easier, Hint can be evil...) choice



/Joe


On Oct 22, 2009, at 7:07 AM, Waldemar Biernacki wrote:


Thank you Martijn!


You mean like in interpreted languages?

Naturally! My mistake.

I'd like to write an application which has to be compiled to exec  
file. It is neccessary to performe some additional procedures  
which are unknown at the moment of the compilition.


You could use the GHC libraries, or Hint which is built on top of  
GHC.

I've used it before and it works pretty nicely.

http://hackage.haskell.org/package/hint


At first sight it seems be what I'm looking for. I'll try.

Thank you for the help!

wb.
___
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] is proof by testing possible?

2009-10-12 Thread Joe Fredette
In general? No- If we had an implementation of the `sin` function, how  
can testing a finite number of points along it determine

if that implementation is correct for every point?

For specific functions (particularly those with finite domain), it is  
possible. If you know the 'correct' output of every input, then  
testing each input and ensuring correct output will work. Consider the  
definition of the `not` function on booleans. The domain only has two  
elements (True and False) and the range has only two outputs (True and  
False), so if I test every input, and insure it maps appropriately to  
the specified output, we're all set.


Basically, if you can write your function as a big case statement that  
covers the whole domain, and that domain is finite, then the function  
can be tested to prove it's correctness.


Now, I should think the Muad'Dib would know that, perhaps you should  
go back to studying with the Mentats. :)


/Joe



On Oct 12, 2009, at 1:42 PM, muad wrote:



Is it possible to prove correctness of a functions by testing it? I  
think the
tests would have to be constructed by inspecting the shape of the  
function

definition.

--
View this message in context: 
http://www.nabble.com/is-proof-by-testing-possible--tp25860155p25860155.html
Sent from the Haskell - Haskell-Cafe mailing list archive at  
Nabble.com.


___
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] is proof by testing possible?

2009-10-12 Thread Joe Fredette
Really? How? That sounds very interesting, I've got a fair knowledge  
of basic topology, I'd love to see an application

to programming...




On Oct 12, 2009, at 1:55 PM, Eugene Kirpichov wrote:


It is possible for functions with compact domain, not just finite.

2009/10/12 Joe Fredette jfred...@gmail.com:
In general? No- If we had an implementation of the `sin` function,  
how can

testing a finite number of points along it determine
if that implementation is correct for every point?

For specific functions (particularly those with finite domain), it is
possible. If you know the 'correct' output of every input, then  
testing each
input and ensuring correct output will work. Consider the  
definition of the
`not` function on booleans. The domain only has two elements (True  
and
False) and the range has only two outputs (True and False), so if I  
test
every input, and insure it maps appropriately to the specified  
output, we're

all set.

Basically, if you can write your function as a big case statement  
that
covers the whole domain, and that domain is finite, then the  
function can be

tested to prove it's correctness.

Now, I should think the Muad'Dib would know that, perhaps you  
should go back

to studying with the Mentats. :)

/Joe



On Oct 12, 2009, at 1:42 PM, muad wrote:



Is it possible to prove correctness of a functions by testing it?  
I think

the
tests would have to be constructed by inspecting the shape of the  
function

definition.

--
View this message in context:
http://www.nabble.com/is-proof-by-testing-possible--tp25860155p25860155.html
Sent from the Haskell - Haskell-Cafe mailing list archive at  
Nabble.com.


___
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





--
Eugene Kirpichov
Web IR developer, market.yandex.ru


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


Re: [Haskell-cafe] is proof by testing possible?

2009-10-12 Thread Joe Fredette
Oh- thanks for the example, I suppose you can disregard my other  
message.


I suppose this is a bit like short-circuiting. No?


On Oct 12, 2009, at 1:56 PM, Eugene Kirpichov wrote:


For example, it is possible to prove correctness of a function
negatedHead :: [Bool] - Bool by testing it on True:undefined and
False:undefined.

2009/10/12 Eugene Kirpichov ekirpic...@gmail.com:

It is possible for functions with compact domain, not just finite.

2009/10/12 Joe Fredette jfred...@gmail.com:
In general? No- If we had an implementation of the `sin` function,  
how can

testing a finite number of points along it determine
if that implementation is correct for every point?

For specific functions (particularly those with finite domain), it  
is
possible. If you know the 'correct' output of every input, then  
testing each
input and ensuring correct output will work. Consider the  
definition of the
`not` function on booleans. The domain only has two elements (True  
and
False) and the range has only two outputs (True and False), so if  
I test
every input, and insure it maps appropriately to the specified  
output, we're

all set.

Basically, if you can write your function as a big case statement  
that
covers the whole domain, and that domain is finite, then the  
function can be

tested to prove it's correctness.

Now, I should think the Muad'Dib would know that, perhaps you  
should go back

to studying with the Mentats. :)

/Joe



On Oct 12, 2009, at 1:42 PM, muad wrote:



Is it possible to prove correctness of a functions by testing it?  
I think

the
tests would have to be constructed by inspecting the shape of the  
function

definition.

--
View this message in context:
http://www.nabble.com/is-proof-by-testing-possible--tp25860155p25860155.html
Sent from the Haskell - Haskell-Cafe mailing list archive at  
Nabble.com.


___
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





--
Eugene Kirpichov
Web IR developer, market.yandex.ru





--
Eugene Kirpichov
Web IR developer, market.yandex.ru


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


Re: [Haskell-cafe] is proof by testing possible?

2009-10-12 Thread Joe Fredette
I completely forgot about free theorems! Do you have some links to  
resources -- I tried learning about them a while

ago, but couldn't get a grasp on them... Thanks.

/Joe



On Oct 12, 2009, at 2:00 PM, Dan Piponi wrote:

On Mon, Oct 12, 2009 at 10:42 AM, muad muad.dib.sp...@gmail.com  
wrote:


Is it possible to prove correctness of a functions by testing it? I  
think the
tests would have to be constructed by inspecting the shape of the  
function

definition.


not True==False
not False==True

Done. Tested :-)

Less trivially, consider a function of signature

swap :: (a,b) - (b,a)

We don't need to test it at all, it can only do one thing, swap its
arguments. (Assuming it terminates.)

But consider:
swap :: (a,a) - (a,a)

If I find that swap (1,2) == (2,1) then I know that swap (x,y)==(y,x)
for all types a and b. We only need one test.
The reason is that we have a free theorem that says that for all
functions, f, of type (a,a) - (a,a) this holds:

f (g a,g b) == let (x,y) = f (a,b) in (g x',g y')

For any x and y define

g 1 = x
g 2 = y

Then f(x,y) == f (g 1,g 2) == let (x',y') == f(1,2) in (g x',g y') ==
let (x',y') == (2,1) in (g x',g y') == (g 2,g 1) == (y,x)

In other words, free theorems can turn an infinite amount of testing
into a finite test. (Assuming termination.)
--
Dan
___
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] is proof by testing possible?

2009-10-12 Thread Joe Fredette

I mean that, like in the definition of `||`

True || _ = True
False || x = x

If you generalize this to `or`-ing a list of inputs, eg:


foldr (||) False list_of_bools

you can 'short-circuit' the test as soon as you find a 'True' value.  
This is actually not the greatest example, since you can't actually  
test it in finite number of tests, but you can test half the  
function by testing a that lists like [True:undefined] or [False,  
False, False, ... , True , undefined] return True.


It's short-circuiting in the sense that it (like the `||` function)  
doesn't need to see (necessarily) all of it's arguments to return a  
correct result.


/Joe


On Oct 12, 2009, at 2:11 PM, Eugene Kirpichov wrote:

What do you mean under short-circuiting here, and what is the  
connection?

The property that allows to deduce global correctness from correctness
on under-defined inputs is just continuity in the topological sense.

2009/10/12 Joe Fredette jfred...@gmail.com:
Oh- thanks for the example, I suppose you can disregard my other  
message.


I suppose this is a bit like short-circuiting. No?


On Oct 12, 2009, at 1:56 PM, Eugene Kirpichov wrote:


For example, it is possible to prove correctness of a function
negatedHead :: [Bool] - Bool by testing it on True:undefined  
and

False:undefined.

2009/10/12 Eugene Kirpichov ekirpic...@gmail.com:


It is possible for functions with compact domain, not just finite.

2009/10/12 Joe Fredette jfred...@gmail.com:


In general? No- If we had an implementation of the `sin`  
function, how

can
testing a finite number of points along it determine
if that implementation is correct for every point?

For specific functions (particularly those with finite domain),  
it is
possible. If you know the 'correct' output of every input, then  
testing

each
input and ensuring correct output will work. Consider the  
definition of

the
`not` function on booleans. The domain only has two elements  
(True and
False) and the range has only two outputs (True and False), so  
if I test
every input, and insure it maps appropriately to the specified  
output,

we're
all set.

Basically, if you can write your function as a big case  
statement that
covers the whole domain, and that domain is finite, then the  
function

can be
tested to prove it's correctness.

Now, I should think the Muad'Dib would know that, perhaps you  
should go

back
to studying with the Mentats. :)

/Joe



On Oct 12, 2009, at 1:42 PM, muad wrote:



Is it possible to prove correctness of a functions by testing  
it? I

think
the
tests would have to be constructed by inspecting the shape of the
function
definition.

--
View this message in context:

http://www.nabble.com/is-proof-by-testing-possible--tp25860155p25860155.html
Sent from the Haskell - Haskell-Cafe mailing list archive at
Nabble.com.

___
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





--
Eugene Kirpichov
Web IR developer, market.yandex.ru





--
Eugene Kirpichov
Web IR developer, market.yandex.ru







--
Eugene Kirpichov
Web IR developer, market.yandex.ru


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


Re: [Haskell-cafe] Re: is proof by testing possible?

2009-10-12 Thread Joe Fredette
That has got to be the single awesomest thing I have ever seen ever...  
The first time I tried to read through the Seemingly Impossible  
Functional Programs post, I understood none of it. Now it seems  
obviously.


I Love Math...

Thanks for the explanation!

/Joe


On Oct 12, 2009, at 3:22 PM, Ben Franksen wrote:


Joe Fredette wrote:

Really? How? That sounds very interesting, I've got a fair knowledge
of basic topology, I'd love to see an application
to programming...


Compactness is one of the most powerful concepts in mathematics,  
because on

the one hand it makes it possible to reduce many infinite problems to
finite ones (inherent in its definition: for every open cover there  
is a
finite subcover), on the other hand it is often easy to prove  
compactness
due to Tychonoff's theorem (any product of compact spaces is  
compact). The

connection to computing science is very nicely explained in

http://math.andrej.com/2007/09/28/seemingly-impossible-functional-programs/

I found this paragraph particularly enlightening:



modulus :: (Cantor - Integer) - Natural
modulus f = least(\n - forevery(\a - forevery(\b - eq n a b --  
(f a ==

f b

This [...] finds the modulus of uniform continuity, defined as the  
least

natural number `n` such that
`forall alpha,beta. alpha =_n beta implies f(alpha)=f(beta),`
where
`alpha =_n beta iff forall i n. alpha_i = beta_i.`

What is going on here is that computable functionals are continuous,  
which
amounts to saying that finite amounts of the output depend only on  
finite
amounts of the input. But the Cantor space is compact, and in  
analysis and
topology there is a theorem that says that continuous functions  
defined on
a compact space are uniformly continuous. In this context, this  
amounts to
the existence of a single `n` such that for all inputs it is enough  
to look

at depth `n` to get the answer (which in this case is always finite,
because it is an integer).


Cheers

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


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


Re: [Haskell-cafe] Re: Re: is proof by testing possible?

2009-10-12 Thread Joe Fredette
I read about differentiating and differences for types, that was  
awesome, but when I read the seemingly-impossible post the first time,  
I didn't have enough background in topology to understand what was  
going on. Differentiating types is usually how I introduce the power  
of haskell's type system to the other students in my Math department.  
I actually showed my algebra professor how non-recursive datatypes in  
n-variables are just multinomials over a commutative (up to  
isomorphism) ring and how you can use that to reason about  
equivalences between types based on the polynomial they're isomorphic  
too. My Algebra Professor, who does not program and knows very little  
about it,  sat back in his chair and say,


So that's what all the fuss is about? Programming is easy!

Really, all this goes to show that a rich, algebraic type system like  
Haskell's is invaluable because it harnesses the power of mathematics  
that we've been working at for years. Free Theorems indeed!


On Oct 12, 2009, at 4:45 PM, Ben Franksen wrote:


Joe Fredette wrote:
That has got to be the single awesomest thing I have ever seen  
ever...


I was dumbfounded, too, when I first read about this.

BTW, and completely off-topic: if you like this, you might have fun  
too with
Conor McBride's discovery that data types can be differentiated, and  
the

result is even useful: it corresponds to what is known (to some) as a
Zipper:

http://www.cs.nott.ac.uk/~ctm/diff.pdf

Moreover, we can also give a sensible and useful interpretation to  
finite

difference quotients of types:

http://blog.sigfpe.com/2009/09/finite-differences-of-types.html

which McBride calls dissections and discusses in some depth here:

http://strictlypositive.org/CJ.pdf

What is most astonishing to me is that these constructions work even  
though

there is neither subtraction nor division defined on data types, only
addition and multiplication (there are neutral elements for both,  
but not

necessarily inverses).

Cheers
Ben

___
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] is proof by testing possible?

2009-10-12 Thread Joe Fredette
Sadly not enough, I understand the basics, but the whole proof =  
this diagram commutes thing still seems like
voodoo to me. There is a section coming up in my Topology ISP that  
will be on CT. So I hope that I will be able to
gain some purchase on the subject, at least enough to build up a  
working understanding on my own.


I have a practical understanding of Functors and Natural  
Transformations, so working a bit with these free theorem things

is kind of fun.

Actually, another germane-if-random question, why isn't there a  
natural transformation class? Something like:



class Functor f, Functor g = NatTrans g f a where
trans :: f a - g a

So your flatten function becomes a `trans` a la

instance NatTrans Tree [] a where
trans = flatten

In fact, I'm going to attempt to do this now... Maybe I'll figure out  
why before you reply. :)


/Joe


On Oct 12, 2009, at 8:41 PM, Brent Yorgey wrote:


Do you know any category theory?  What helped me finally grok free
theorems is that in the simplest cases, the free theorem for a
polymorphic function is just a naturality condition.  For example, the
free theorem for

 flatten :: Tree a - [a]

is precisely the statement that flatten is a natural transformation
from the Tree functor to the list functor:

 fmap_[] g . flatten == flatten . fmap_Tree g

It gets more complicated than this, of course, but that's the basic  
idea.


-Brent

On Mon, Oct 12, 2009 at 02:03:11PM -0400, Joe Fredette wrote:

I completely forgot about free theorems! Do you have some links to
resources -- I tried learning about them a while
ago, but couldn't get a grasp on them... Thanks.

/Joe



On Oct 12, 2009, at 2:00 PM, Dan Piponi wrote:

On Mon, Oct 12, 2009 at 10:42 AM, muad muad.dib.sp...@gmail.com  
wrote:


Is it possible to prove correctness of a functions by testing it?  
I think

the
tests would have to be constructed by inspecting the shape of the
function
definition.


not True==False
not False==True

Done. Tested :-)

Less trivially, consider a function of signature

swap :: (a,b) - (b,a)

We don't need to test it at all, it can only do one thing, swap its
arguments. (Assuming it terminates.)

But consider:
swap :: (a,a) - (a,a)

If I find that swap (1,2) == (2,1) then I know that swap  
(x,y)==(y,x)

for all types a and b. We only need one test.
The reason is that we have a free theorem that says that for all
functions, f, of type (a,a) - (a,a) this holds:

f (g a,g b) == let (x,y) = f (a,b) in (g x',g y')

For any x and y define

g 1 = x
g 2 = y

Then f(x,y) == f (g 1,g 2) == let (x',y') == f(1,2) in (g x',g y')  
==

let (x',y') == (2,1) in (g x',g y') == (g 2,g 1) == (y,x)

In other words, free theorems can turn an infinite amount of testing
into a finite test. (Assuming termination.)
--
Dan
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


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

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


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


Re: [Haskell-cafe] is proof by testing possible?

2009-10-12 Thread Joe Fredette
I fiddled with my previous idea -- the NatTrans class -- a bit, the  
results
are here[1], I don't know enough really to know if I got the NT law  
right, or

even if the class defn is right.

Any thoughts? Am I doing this right/wrong/inbetween? Is there any use  
for a class
like this? I listed a couple ideas of use-cases in the paste, but I  
have no idea of

the applicability of either of them.

/Joe



http://hpaste.org/fastcgi/hpaste.fcgi/view?id=10679#a10679


On Oct 12, 2009, at 8:41 PM, Brent Yorgey wrote:


Do you know any category theory?  What helped me finally grok free
theorems is that in the simplest cases, the free theorem for a
polymorphic function is just a naturality condition.  For example, the
free theorem for

 flatten :: Tree a - [a]

is precisely the statement that flatten is a natural transformation
from the Tree functor to the list functor:

 fmap_[] g . flatten == flatten . fmap_Tree g

It gets more complicated than this, of course, but that's the basic  
idea.


-Brent

On Mon, Oct 12, 2009 at 02:03:11PM -0400, Joe Fredette wrote:

I completely forgot about free theorems! Do you have some links to
resources -- I tried learning about them a while
ago, but couldn't get a grasp on them... Thanks.

/Joe



On Oct 12, 2009, at 2:00 PM, Dan Piponi wrote:

On Mon, Oct 12, 2009 at 10:42 AM, muad muad.dib.sp...@gmail.com  
wrote:


Is it possible to prove correctness of a functions by testing it?  
I think

the
tests would have to be constructed by inspecting the shape of the
function
definition.


not True==False
not False==True

Done. Tested :-)

Less trivially, consider a function of signature

swap :: (a,b) - (b,a)

We don't need to test it at all, it can only do one thing, swap its
arguments. (Assuming it terminates.)

But consider:
swap :: (a,a) - (a,a)

If I find that swap (1,2) == (2,1) then I know that swap  
(x,y)==(y,x)

for all types a and b. We only need one test.
The reason is that we have a free theorem that says that for all
functions, f, of type (a,a) - (a,a) this holds:

f (g a,g b) == let (x,y) = f (a,b) in (g x',g y')

For any x and y define

g 1 = x
g 2 = y

Then f(x,y) == f (g 1,g 2) == let (x',y') == f(1,2) in (g x',g y')  
==

let (x',y') == (2,1) in (g x',g y') == (g 2,g 1) == (y,x)

In other words, free theorems can turn an infinite amount of testing
into a finite test. (Assuming termination.)
--
Dan
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


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

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


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


Re: [Haskell-cafe] Haskell Weekly News: Issue 134 - October 10, 2009

2009-10-11 Thread Joe Fredette
I'm happy to tack it on to the sendout, but as others have mentioned,  
subscription to haskell-general (to use GManes nomenclature) is  
probably the better option. -beginners, iirc, is principally for  
questions, not community content. Is this the consensus over there?


I'll do whatever you folks decide on...

/Joe


On Oct 11, 2009, at 8:10 AM, Patrick LeBoutillier wrote:


Hi,

Could/should the Haskell Weekly News be posted to the beginners list  
as well?


I normally don't follow haskell-cafe (too much traffic and generally  
above my level I must admit...), but I like to follow what's going  
on in the Haskell community.



Patrick

On Sat, Oct 10, 2009 at 3:47 AM, jfred...@gmail.com wrote:

---
Haskell Weekly News
http://sequence.complete.org/hwn/20091010
Issue 134 - October 10, 2009
---
  Welcome to issue 134 of HWN, a newsletter covering developments in  
the

  [1]Haskell community.

  What with Don Stewart's [2]call to [3]arms to lead Haskell to  
conquest

  over (E)DSL-land, I've once again tried to highlight discussion of
  EDSL's this week. Fortunately, it was actually more difficult  
choosing

  what _not_ to include this week, since there was so much discussion
  about DSLs and Syntax extensions (a related notion, in my opinion).
  Also, this week Bryan O'Sullivan put his Criterion Library to good  
use
  on the `text` package, leading to [4]code which is more than ten  
times
  faster than before! With all this fantastic news, I won't hold you  
up

  any longer, Haskellers, the Haskell Weekly News!

Announcements

  CfPart: FMICS 2009, 2-3 November 2009, Final Call. FMICS 2009  
workshop

  chair [5]announced the final call for particpaction for FMICS 2009

  ICFP videos now available. Wouter Swierstra [6]announced the
  availablity of videos from the International Conference on  
Functional

  Programming (ICFP)

  GPipe-1.0.0: A functional graphics API for programmable GPUs. Tobias
  Bexelius [7]announced the first release of GPie, a functional  
graphics

  API for programmable GPUs.

  text 0.5, a major revision of the Unicode text library. Bryan
  O'Sullivan [8]announced a new, major version of the text package.  
New

  API features, and huge improvments in speed, as Bryan says, 'Get it
  while it's fresh on Hackage, folks!'

  vty-ui 0.2. Jonathan Daugherty [9]announced a new version of the  
vty-ui

  package, with fewer bugs, more widgets, and cleaner code due to new
  more powerful abstractions.

  htzaar-0.0.1. Tom Hawkins [10]announced HTZAAR, a Haskell
  implementation of TZAAR

  Graphalyze-0.8.0.0 and SourceGraph-0.5.5.0. Ivan Lazar Miljenovic
  [11]announced To keep this editor happy, Ivan released two new  
packaged

  in one announcement. This time, he's added Legend support to
  Graphalyze, but also many new changes to SourceGraph, including a
  legend so you can see what all the symbols mean, Better color  
support,

  and much more.

  TxtSushi 0.4.0. Keith Sheppard [12]announced a new version of  
TxtSushi,

  a set of command line utilities for processing CSV and TSV files.

Discussion

  Applicative do? Philippa Cowderoy [13]asked about a `do` like syntax
  for Applicative functors.

  How to add use custom preprocessor in cabal. Bernd Brassel [14]asked
  how to add a custom preprocessor to the build chain of a cabal file.

  On DSLs - one last time. Gunther Schmidt [15]summarized his  
impressions

  on al the recent discussion of DSLs

  What is a DSL? Oleg [16]offered some insight into different
  [17]properties that can be part of a single tagless framework. He  
also
  pointed to some slides and other materials such as a website  
[18]here

  and slides [19]here about DSL implementations and definitions.

  What is a DSL? Gunther Schmidt [20]posed the question, 'What is a  
DSL',

  and with some further questions added by yours truly, a lively
  discussion about the definition of a DSL ensued.

  Finally tagless - stuck with implementation of 'lam'. Gunther  
Schmidt
  [21]asked another question about Finally Tagless DSLs and  
resolving an

  issue with the implementation of 'lam'

Blog noise

  [22]Haskell news from the [23]blogosphere. Blog posts from people  
new
  to the Haskell community are marked with , be sure to welcome  
them!

* Darcs: [24]darcs weekly news #43.
* JP Moresmau: [25]What client for an Haskell Multi Player Game?.
* Mikael Vejdemo Johansson (Syzygy-): [26][MATH198] Third  
lecture is

  up.
* Bryan O'Sullivan: [27]Announcing a major revision of the Haskell
  text library.
* Eric Kow (kowey): [28]darcs hashed-storage work merged (woo!).
* David Amos: [29]Symmetries of PG(n,Fq).
* The GHC Team: [30]Parallelism /= Concurrency.
*  Nefigah: [31]Fake World Haskell. Nefigah, a recent  
addition to
  the community, has been working through RWH, and is 

Re: [Haskell-cafe] Re: Haskell Weekly News

2009-10-09 Thread Joe Fredette
Mostly it's been issues with sendmail, I think I have them fixed for  
this week. (I think...)


Thanks for the input!

/Joe


On Oct 9, 2009, at 4:46 AM, Benjamin L.Russell wrote:


Thank you for including my quote (by dekudekuplex), and great work
so far!

Just a couple of minor comments:

1) It might be useful for referencing by subject if you could include
the issue number and date in the subject line (e.g.,  Haskell Weekly
News: Issue 131 - September 25, 2009) instead of only Haskell Weekly
News.

2) Instead of posting separately to the Haskell and Haskell-Cafe
mailing lists, it might be better to cross-post, since that way,
readers using newsreaders can have the cross-posted article
automatically marked read in the mailing list where it has not been
read.

Other than that, hope that you get over your sinus infection, and keep
up the good work!

Benjamin L. Russell

On Sat, 03 Oct 2009 09:46:25 -0700 (PDT), Joe Fredette
jfred...@gmail.com wrote:



---
Haskell Weekly News
http://sequence.complete.org/hwn/20091003
Issue 134 - October 03, 2009
---
 Welcome to issue 134 of HWN, a newsletter covering developments in  
the

 [1]Haskell community.

 I have a nasty sinus infection this week, so we're somewhat light on
 content. Lots of good discussion about DSL related stuff this week.
 Bryan O'Sullivan also release 'Criterion' this week, a new  
benchmarking

 library that Don Stewart described (on reddit) as 'awesome and game
 changing.' A new TMR editor -- someone familiar -- was announced.  
Also,
 there was some talk about homework policies on the mailinglists  
and in

 the irc channels. There is a [2]page on the Haskell wiki about this,
 but to sum it up in a maxim, remember, 'Help, don't do'. Until next
 week, the Haskell Weekly News!

Announcements

 New TMR editor. Wouter Swierstra [3]announced that he would be  
stepping
 down from the editorship of 'The Monad Reader', with former HWN  
editor
 Brent Yorgey taking his place. Much thanks for Wouter's hard work  
and

 good luck to Brent on his new editor job!

 SourceGraph 0.5.{0,1,2}.0. Ivan Lazar Miljenovic [4]announced  
three new
 releases of the SourceGraph packages, this links to the latest  
release.


 json-b-0.0.4. Jason Dusek [5]announced a new version of the json-b
 package, which fixes defective handling of empty objects and arrays.

 rss2irc 0.4 released. Simon Michael [6]announced a new release of
 rss2irc, with many new improvements and features.

 vty-ui 0.1. Jonathan Daugherty [7]announced vty-ui, which is an
 extensible library of user interface widgets for composing and  
laying

 out Vty user interfaces.

 atom-0.1.1. Tom Hawkins [8]announced Atom, a Haskell DSL for  
designing

 hard real-time embedded applications.

 Graphalyze-0.7.0.0. Ivan Lazar Miljenovic [9]announced (in an  
apparent
 effort to take over hackage by submitting dozens of quality  
packages at
 absurdly high speed), Graphalyze, a library for using graph- 
theoretic
 techniques to analyse the relationships inherent within discrete  
data.


 Criterion. Bryan O'Sullivan [10]announced (without tacking on an  
'ANN'

 tag, I might add, I almost missed it!) Criterion, a benchmarking
 library he describes [11]here.

 ListTree 0.1. yair...@gmail.com [12]announced ListTree, a package  
for

 combinatorial search and pruning of trees.

 usb-0.1. Bas van Dijk [13]announced a library for interacting with  
usb

 modules from userspace.

 (Deadline extended to October 5th) APLAS 2009 Call for Posters.
 Kiminori Matsuzaki [14]announced a deadline extension to the call  
for

 posters for the APLAS conference.

 graphviz-2999.6.0.0. Ivan Lazar Miljenovic [15]announced a new  
version
 of the graphviz library, which features various new features and  
small

 changes.

Discussion

 Testing polymorphic properties with QuickCheck. Jean-Philippe  
Bernardy

 [16]gave an excellent overview about how to use QuickCheck to test
 polymorphic properties.

 Designing a DSL? Gunther Schmidt [17]asked about different methods
 employed for designing a DSL.

 DSL and GUI Toolkits. Gunther Schmidt [18]also asked about different
 DSLs for working with GUIs

 error on --++ bla bla bla. Hong Yang [19]asked about why '--++'
 wasn't being parsed in the way he thought it was.

 Haskell for Physicists. edgar [20]requested name suggestions for the
 talk he is giving about Physics and Haskell.

Blog noise

 [21]Haskell news from the [22]blogosphere. Blog posts from people  
new
 to the Haskell community are marked with , be sure to welcome  
them!
   * Sean Leather: [23]'Extensibility and type safety in  
formatting: the

 design of xformat' at the Dutch HUG.
   * Martijn van Steenbergen: [24]let 5 = 6.
   * Lee Pike: [25]Writer's unblock.
   * Manuel M T Chakravarty: [26]NVIDIAs next generation GPU
 architecture has a lot for HPC to love

Re: [Haskell-cafe] Applicative do?

2009-10-09 Thread Joe Fredette
The only issue I would have with such a notation is not being able to  
visually tell the difference between a monadic function (say, without  
a explicit type sig, which is how I write parsers), and an applicative  
one.


I'd prefer something like

foo = app
blah blah

If only for some visual distinction, I think it also resolves the do  
knowing about types issue.


Plus, this is a good case for some kind of custom-do syntax facility.  
So we could make do syntax for everything. :)


/Joe

On Oct 9, 2009, at 1:11 PM, Robert Atkey wrote:


On Fri, 2009-10-09 at 18:06 +0100, Philippa Cowderoy wrote:


This leads us to the bikeshed topic: what's the concrete syntax?


I implemented a simple Camlp4 syntax extension for Ocaml to do this. I
chose the syntax:

  applicatively
  let x = foo
  let y = bar
  in pure stuff

I quite like the word applicatively.

Your overloading suggestion sounds to me like it would require the
desugaring process to know something about types, but I'm not sure.

Bob


--
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.

___
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] Fast times as Inferable-but-not-Checkable High -- Link to Source

2009-10-07 Thread Joe Fredette

Sorry, I forgot to actually include the link to the source:

http://lowlymath.net/Iso.hs

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


Re: [Haskell-cafe] What *is* a DSL?

2009-10-07 Thread Joe Fredette
Let me add to this, as I've used the term DSL without (*gasp*) fully  
understanding it before.


In addition to What is a DSL, I'd like to ask:

How is a DSL different from an API? -- in the sense that an API is a  
set of, say, combinators to filter email + a monad in which to combine  
them. Or even the API in the more traditional sense of the set of  
exposed operations on a given type. Is an API a kind of DSL? A kind of  
Embedded DSL?


Also,

What is the difference between an EDSL and a DSL? -- I've got a  
vague intuition of the difference, but am unsure how to particularly  
delineate them.


Also, any good introductory papers/books/other resources on DSLs and  
how to design, build and use them would be _lovely_.


/Joe

On Oct 7, 2009, at 11:10 AM, Günther Schmidt wrote:


Hi all,


for people that have followed my posts on the DSL subject this  
question probably will seem strange, especially asking it now.


I have read quite a lot lately on the subject, most of it written by  
the great old ones, (come on guys you know whom I mean :)).


What I could gather from their papers was, that a DSL is basically  
something entirely abstract as such, ie. it allows you build and  
combine expressions in a language which is specific for your problem  
domain.
Irregardless of further details on how to do that, and there are  
quite a few, the crux as such is that they are abstract of meaning.


The meaning depends how you *evaluate* the expression, which can be  
in more than merely one way, which is where, as far as I understand  
it, the true power lies.



So, you might wonder, since I figured it out this far, why ask what  
a DSL is?


Because out there I see quite a lot of stuff that is labeled as DSL,  
I mean for example packages on hackage, quite useuful ones too,  
where I don't see the split of assembling an expression tree from  
evaluating it, to me that seems more like combinator libraries.


Thus:

What is a DSL?


Günther


___
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] What *is* a DSL?

2009-10-07 Thread Joe Fredette

So, if I understand this:

Parsec is a DSL, I'm going to venture it's a Deep embedding -- I  
don't understand the internals, but if I were to build something like  
Parsec, I would probably build up a Parser datastructure and then  
apply optimizations to it, then run it with another function.


Am I on the right track here?

/Joe


On Oct 7, 2009, at 11:24 AM, Emil Axelsson wrote:


Hi,

A DSL is just a domain-specific language. It doesn't imply any  
specific implementation technique.


An *embedded* DSL is a library implemented in a more general  
language, which has been designed to give the feeling of a stand- 
alone language. Still nothing about implementation.


A *shallow embedding* of a DSL is when the evaluation is done  
immediately by the functions and combinators of the DSL. I don't  
think it's possible to draw a line between a combinator library and  
a shallowly embedded DSL.


A *deep embedding* is when interpretation is done on an intermediate  
data structure.


/ Emil



Günther Schmidt skrev:

Hi all,
for people that have followed my posts on the DSL subject this  
question probably will seem strange, especially asking it now.
I have read quite a lot lately on the subject, most of it written  
by the great old ones, (come on guys you know whom I mean :)).
What I could gather from their papers was, that a DSL is basically  
something entirely abstract as such, ie. it allows you build and  
combine expressions in a language which is specific for your  
problem domain.
Irregardless of further details on how to do that, and there are  
quite a few, the crux as such is that they are abstract of meaning.
The meaning depends how you *evaluate* the expression, which can be  
in more than merely one way, which is where, as far as I understand  
it, the true power lies.
So, you might wonder, since I figured it out this far, why ask what  
a DSL is?
Because out there I see quite a lot of stuff that is labeled as  
DSL, I mean for example packages on hackage, quite useuful ones  
too, where I don't see the split of assembling an expression tree  
from evaluating it, to me that seems more like combinator libraries.

Thus:
What is a DSL?
Günther
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

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


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


Re: [Haskell-cafe] Re: Num instances for 2-dimensional types

2009-10-07 Thread Joe Fredette
A ring is an abelian group in addition, with the added operation (*)  
being distributive over addition, and 0 annihilating under  
multiplication. (*) is also associative. Rings don't necessarily need  
_multiplicative_ id, only _additive_ id. Sometimes Rings w/o ID is  
called a Rng (a bit of a pun).


/Joe


On Oct 7, 2009, at 4:41 PM, David Menendez wrote:

On Wed, Oct 7, 2009 at 12:08 PM, Ben Franksen  
ben.frank...@online.de wrote:


More generally, any ring with multiplicative unit (let's call it  
'one') will

do.


Isn't that every ring? As I understand it, the multiplication in a
ring is required to form a monoid.

--
Dave Menendez d...@zednenem.com
http://www.eyrie.org/~zednenem/
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


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


Re: [Haskell-cafe] Re: Num instances for 2-dimensional types

2009-10-07 Thread Joe Fredette
I was just quoting from Hungerford's Undergraduate text, but yes, the  
default ring is in {Rng, Ring}, I haven't heard semirings used in  
the sense of a Rng. I generally find semirings defined as a ring  
structure without additive inverse and with 0-annihilation (which one  
has to assume in the case of SRs, I included it in my previous  
definition because I wasn't sure if I could prove it via the axioms, I  
think it's possible, but I don't recall the proof).


Wikipedia seems to agree with your definition, though it does have a  
note which says some authors use the definition of Abelian Group +  
Semigroup (my definition) as opposed to Abelian Group + Monoid (your  
defn).


Relevant:

http://en.wikipedia.org/wiki/Semiring
http://en.wikipedia.org/wiki/Ring_(algebra)
http://en.wikipedia.org/wiki/Ring_(algebra)#Notes_on_the_definition

/Joe

On Oct 7, 2009, at 5:41 PM, Daniel Fischer wrote:


Am Mittwoch 07 Oktober 2009 22:44:19 schrieb Joe Fredette:

A ring is an abelian group in addition, with the added operation (*)
being distributive over addition, and 0 annihilating under
multiplication. (*) is also associative. Rings don't necessarily need
_multiplicative_ id, only _additive_ id. Sometimes Rings w/o ID is
called a Rng (a bit of a pun).

/Joe


In my experience, the definition of a ring more commonly includes  
the multiplicative
identity and abelian groups with an associative multiplication which  
distributes over

addition are called semi-rings.

There is no universally employed definition (like for natural  
numbers, is 0 included or
not; fields, is the commutativity of multiplication part of the  
definition or not;

compactness, does it include Hausdorff or not; ...).
___
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] Creating an alias for a function

2009-10-06 Thread Joe Fredette
Well, you can drop the arguments entirely, and let the type be  
inferred to get


car = head

which is pretty nice. You could use an INLINE hint to make the  
compiler replace it before compilation, though I don't think it would  
change performance much...


/Joe

On Oct 6, 2009, at 10:01 PM, michael rice wrote:

How do I create an alias for a function, like giving CAR the same  
functionality as HEAD. I know I can do it by creating a definition  
(see below), but is there a better way, like Scheme's


(define head car)

car ::  [a] - a
car x = head x

The reason for doing this is to more closely mirror legacy code.

Michael



___
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] Fast times at Inferable-but-not-Checkable High.

2009-10-06 Thread Joe Fredette
So, I've been fiddling with an utterly random idea. What if I had a  
class:


class Hom a b where
  data Rep a b
  hm :: Rep a b - b
  im  :: a - Rep a b

That is, all types that have some conversion between them (an  
isomorphism originally, then I thought homomorphism, now I'm not sure  
what the hell I'm talking about, so I've just stuck with Hom...) which  
preserves some sense of structure and content, for instance



 data CouldBe a = Only a | Nada

is _obviously_ the same type as `Maybe`. However, it can't be used  
transparently where `Maybe` can be used. That is, shouldn't I be able  
to define a 1-1, onto function `phi :: CouldBe a - Maybe a` and as  
such another `pho :: Maybe a - CouldBe a` such that


 phi . pho = pho . phi = phum ... errr. `id`?

Hom a b represents one end of that (specifically `hm . im = phi`, and  
`hm . im` for the instance `Hom b a` would `pho`), then I could,  
instead of writing a type which expects maybe, simply expects anything  
_equivalent_ to a maybe, eg


 safeHead :: Hom (Maybe a) b = [c] - Rep a (Maybe c)
 safeHead [] = im Nothing
 safeHead (x:_) = im (Just x)

Though- I think this is a little bit off in terms of how it should  
work, perhaps this is my problem, but the idea is that instead of  
returning a Maybe, it returns something which can be converted _from_  
a maybe. That is, a generic type like:


 data X1 a = X a | Y

which is the form of any maybe-like type.

In one sense, I'm almost trying to be polymorphic over the  
constructors of a given type, kindof, sortof, if you squint your eyes  
just right and try not to think too much.


My problem comes when I try to do this:

 hom = hm . im
 eq x y = hom x == hom y

Which, I reason, ought to satisfy the type:

 eq :: (Hom a b, Eq b) = a - a - Bool

this assumes that hom defines a equality-preserving conversion.  
However, the type it infers is:


eq :: (Hom a b, Hom a1 b, Eq b) = a - a1 - Bool

Now, this makes sense, all my signature is is a special case of this  
type. Interesting consequence, this eq could compare a `Maybe a` and  
`CouldBe a` in a sensical way. Which is a nice benefit. However,  
here's where it gets weird, If I try to _provide_ this signature (the  
second, more general one, or the first, specific one, it doesn't  
matter), GHC gives me the following error:


Iso.hs:29:10:
Could not deduce (Hom a b) from the context (Hom a b1, Eq b1)
  arising from a use of `hom' at Iso.hs:29:10-14
Possible fix:
  add (Hom a b) to the context of the type signature for `eq'
In the first argument of `(==)', namely `(hom x)'
In the expression: (hom x) == (hom y)
In the definition of `eq': eq x y = (hom x) == (hom y)
Failed, modules loaded: none.

for the latter and a similar one (but for each of the `Hom a b`, `Hom  
a1 b` cases.


Punchline is this, I'm trying to write a generic equality that works  
for any two types with the same constructor-structure, when I try to  
write said function, GHC can infer but not Check (it seems, I'm not  
sure if that's the correct lingo) the type...


My question is twofold.

1. Is this whole idea even possible? I mean- is there some limitation  
I'm going to run into, I have run into problems when trying to do:


instance (Hom a b, Eq b) = Eq a where
   blah

wrt UndecideableInstances. But it seems so _obvious_ what that means,  
I don't think I fully understand what's going on -- that is, whether  
I'm misunderstanding how class contexts work here, and why this  
(seemingly obvious) signature is undecidable, or whether I'm just  
mistaken in my type signature all together. (My goal is to say that  
anything which can be converted freely to and from something that is  
an instance of the Eq class, must preserve the equality relationships.


2. Why is GHC unable to check the types, but infer them. I always  
understood inferring to be the hard part of the problem, and  
checking to be the easy part. Is my intuition wrong?


I've posted the code here[1] for your perusal. It's not particularly  
important that I get this solved, it's just a random idea I wanted to  
explore and thought the notion might appeal to some other Haskeller's  
around there who like to have self-documenting datatypes, but hate  
having to rewrite lots of simple utility functions as penance for our  
documentarian sins.


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


Re: [Haskell-cafe] Num instances for 2-dimensional types

2009-10-05 Thread Joe Fredette
Shouldn't the question not be Is this a number? but rather What is  
a number? -- I mean, from an abstract point of view, there's really  
no such thing, right? We have sets of things which we define an  
operation that has certain properties, and suddenly we start calling  
them numbers. Are the Symmetric groups -- which you can multiply and  
divide, but not add -- numbers? If they aren't, why should Z_n be  
numbers?


What _is_ true, is that you can define a notion of addition and  
multiplication for both complexes and 'double' numbers, that doesn't  
mean they are numbers, rather, it means they are both Rings. Nor  
does it imply that they must be the same They are both rings over  
the same set of elements (Lets say, RxR), but with different operations.


Furthermore, can't you construct the Rational's from the Integers in a  
similar way as you construct the complexes from the reals (by modding  
out an ideal/polynomial (resp)) -- I actually don't know for certain,  
we haven't gotten that far in my Alg. Class yet. :), but my intuition  
says that it's likely possible.


Point is -- there are lots of classes for which you can implement a  
useful notion of addition in more than one way -- or a useful notion  
of some other class function (monad stuff for Lists and Ziplists, for  
example), but that doesn't necessarily mean that the two things are  
the same structure, right?


/Joe

On Oct 5, 2009, at 10:55 AM, Miguel Mitrofanov wrote:

No, they aren't. They are polynomials in one variable i modulo  
i^2+1.


Seriously, if you say complex numbers are just pairs of real numbers  
- you have to agree that double numbers (sorry, don't know the exact  
English term), defined by


(a,b)+(c,d) = (a+c,b+d)
(a,b)(c,d) = (ac, ad+bc)

are just pairs of real numbers too. After that, you have two  
choices: a) admit that complex numbers and double numbers are the  
same - and most mathematicians would agree they aren't - or b) admit  
that the relation be the same is not transitive - which is simply  
bizarre.



Lennart Augustsson wrote:

But complex numbers are just pairs of numbers.  So pairs of numbers
can obviously be numbers then.
On Mon, Oct 5, 2009 at 4:40 PM, Miguel Mitrofanov miguelim...@yandex.ru 
 wrote:

Lennart Augustsson wrote:

And what is a number?
Can't say. You know, it's kinda funny to ask a biologist what it  
means to be

alive.


Are complex numbers numbers?
Beyond any reasonable doubt. Just like you and me are most  
certainly alive.



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

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


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


[Haskell-cafe] Haskell Weekly News

2009-10-03 Thread Joe Fredette

---
Haskell Weekly News
http://sequence.complete.org/hwn/20091003
Issue 134 - October 03, 2009
---
   Welcome to issue 134 of HWN, a newsletter covering developments in the
   [1]Haskell community.

   I have a nasty sinus infection this week, so we're somewhat light on
   content. Lots of good discussion about DSL related stuff this week.
   Bryan O'Sullivan also release 'Criterion' this week, a new benchmarking
   library that Don Stewart described (on reddit) as 'awesome and game
   changing.' A new TMR editor -- someone familiar -- was announced. Also,
   there was some talk about homework policies on the mailinglists and in
   the irc channels. There is a [2]page on the Haskell wiki about this,
   but to sum it up in a maxim, remember, 'Help, don't do'. Until next
   week, the Haskell Weekly News!

Announcements

   New TMR editor. Wouter Swierstra [3]announced that he would be stepping
   down from the editorship of 'The Monad Reader', with former HWN editor
   Brent Yorgey taking his place. Much thanks for Wouter's hard work and
   good luck to Brent on his new editor job!

   SourceGraph 0.5.{0,1,2}.0. Ivan Lazar Miljenovic [4]announced three new
   releases of the SourceGraph packages, this links to the latest release.

   json-b-0.0.4. Jason Dusek [5]announced a new version of the json-b
   package, which fixes defective handling of empty objects and arrays.

   rss2irc 0.4 released. Simon Michael [6]announced a new release of
   rss2irc, with many new improvements and features.

   vty-ui 0.1. Jonathan Daugherty [7]announced vty-ui, which is an
   extensible library of user interface widgets for composing and laying
   out Vty user interfaces.

   atom-0.1.1. Tom Hawkins [8]announced Atom, a Haskell DSL for designing
   hard real-time embedded applications.

   Graphalyze-0.7.0.0. Ivan Lazar Miljenovic [9]announced (in an apparent
   effort to take over hackage by submitting dozens of quality packages at
   absurdly high speed), Graphalyze, a library for using graph-theoretic
   techniques to analyse the relationships inherent within discrete data.

   Criterion. Bryan O'Sullivan [10]announced (without tacking on an 'ANN'
   tag, I might add, I almost missed it!) Criterion, a benchmarking
   library he describes [11]here.

   ListTree 0.1. yair...@gmail.com [12]announced ListTree, a package for
   combinatorial search and pruning of trees.

   usb-0.1. Bas van Dijk [13]announced a library for interacting with usb
   modules from userspace.

   (Deadline extended to October 5th) APLAS 2009 Call for Posters.
   Kiminori Matsuzaki [14]announced a deadline extension to the call for
   posters for the APLAS conference.

   graphviz-2999.6.0.0. Ivan Lazar Miljenovic [15]announced a new version
   of the graphviz library, which features various new features and small
   changes.

Discussion

   Testing polymorphic properties with QuickCheck. Jean-Philippe Bernardy
   [16]gave an excellent overview about how to use QuickCheck to test
   polymorphic properties.

   Designing a DSL? Gunther Schmidt [17]asked about different methods
   employed for designing a DSL.

   DSL and GUI Toolkits. Gunther Schmidt [18]also asked about different
   DSLs for working with GUIs

   error on --++ bla bla bla. Hong Yang [19]asked about why '--++'
   wasn't being parsed in the way he thought it was.

   Haskell for Physicists. edgar [20]requested name suggestions for the
   talk he is giving about Physics and Haskell.

Blog noise

   [21]Haskell news from the [22]blogosphere. Blog posts from people new
   to the Haskell community are marked with , be sure to welcome them!
 * Sean Leather: [23]'Extensibility and type safety in formatting: the
   design of xformat' at the Dutch HUG.
 * Martijn van Steenbergen: [24]let 5 = 6.
 * Lee Pike: [25]Writer's unblock.
 * Manuel M T Chakravarty: [26]NVIDIAs next generation GPU
   architecture has a lot for HPC to love.
 * David Amos: [27]Finite geometries, part 4: Lines in PG(n,Fq).
 * Bryan O'Sullivan: [28]New criterion release works on Macs.
 * Neil Brown: [29]Poison: Concurrent Termination.
 * The GHC Team: [30]Heads up: what you need to know about Unicode I/O
   in GHC 6.12.1.
 * Galois, Inc: [31]Tech Talk: Roll Your Own Test Bed for Embedded
   Real-Time Protocols: A Haskell Experience.
 * Bryan O'Sullivan: [32]Criterion, a new benchmarking library for
   Haskell.
 * Tom Schrijvers: [33]Monadic Constraint Programming.
 * Neil Brown: [34]Growing Sort Pump.

Quotes of the Week

 * dekudekuplex: (Unfortunately (unless intentional)) the preceding
   (by ksf (in the 'Quotes of the Week' section)) quote had mismatched
   (one too many opening) parentheses (although it was still funny
   (even though it could have been edited (to make the parentheses
   

Re: [Haskell-cafe] New TMR editor

2009-10-01 Thread Joe Fredette
Ah-- so _that's_ why you stopped doing HWN. Moving on to Greener  
Pastures...


:) Congrats Brent!

On Oct 1, 2009, at 3:44 PM, Brent Yorgey wrote:


On Thu, Oct 01, 2009 at 04:33:43PM +0200, Wouter Swierstra wrote:

Dear all,

After several years at the helm, I've decided to step down as  
editor of the

Monad.Reader.

I am happy to announce that Brent Yorgey will take over my role as  
editor.
I'd like to take this opportunity to thank Brent for helping to  
keep the

Monad.Reader alive. I'm sure he'll do a fantastic job.

Finally, I'd like to thank all the people who have contributed to the
Monad.Reader over the last few years – you guys have made this
publication, and my job as an editor, so much fun.


And let me be the first to thank Wouter for the outstanding job he's
done as editor!  I think he deserves much thanks for consistently
putting together such a high-quality publication.

I look forward to continuing the tradition of excellence -- and I hope
YOU, the author of an upcoming Monad.Reader article, do too!  I'll be
sending out a call for copy for the next issue soon.

-Brent
___
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] Doing people's homework?

2009-09-28 Thread Joe Fredette
I think the consensus is Help, not do when it comes to homework  
(esp. on -beginners). At least, thats what I try to do. I've always  
got the sense that that is what the community expects.




On Sep 28, 2009, at 7:40 PM, Michael P Mossey wrote:

I'm not really hip to the culture here so this is just an  
observation, but some of the recent questions posted to this list  
(and beginn...@haskell.org) look a lot like someone's homework. Is  
anyone here concerned about avoiding giving the full answer, or  
maybe it's really none of our business (we aren't responsible for  
anyone's learning process)?


___
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] Sorry about the triple post

2009-09-26 Thread Joe Fredette
Trying to work out how to make sendmail do what I want, my computer is  
a fickle beast. Also- it should be HWN issue 133. But I'm an idiot,  
and just copied the value without thinking.


Someday, when I automate all the uploading/sending to the list  
business, this will not be an issue... :/


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


[Haskell-cafe] Haskell Weekly News: Issue 131 - Semptember 25, 2009

2009-09-26 Thread Joe Fredette

This week is an experiment, I'm eliminating the mail client from the sendout,
and simply using sendmail directly. If this doesn't fix the line ending problem,
then I'm pretty sure it's a software issue, and not a client issue. If you 
notice problems, please email me at this address, put [HWN] in the subject
line so my filters will catch it. Please _don't_ email me if there are no
problems.

Thanks,

/Joe

---
Haskell Weekly News
http://sequence.complete.org/hwn/20090926
Issue 133 - September 26, 2009
---
   Welcome to issue 133 of HWN, a newsletter covering developments in the
   [1]Haskell community.

   This week, we have a few new libraries, some interesting discussion
   about EDSLs, a comment from Oleg, and dons extolling the virtues of
   SCIENCE! On the new HWN software front, I've decided to jump right into
   something I had planned for far further down the development chain.
   Specifically, rather than scraping GMane for messages, I've been
   working on a way to grab the messages directly from the mailing-lists.
   I'm not entirely sure how I'm going to create links as they are now for
   the messages, but one crisis at a time. Till next week, here's the
   Haskell Weekly News!

Announcements

   epoll bindings 0.2. Toralf Wittner [2]announced the release of epoll
   bindings 0.2 available [3]here. Epoll is an I/O event notification
   facility for Linux similar to poll but with good scaling
   characteristics. This release adds a buffer abstraction on top of the
   existing low-level bindings, so client code can write and read to
   buffers without having to deal directly with the underlying epoll event
   handling.

   diagrams 0.2.1, and planned major improvements. Brent Yorgey
   [4]announced version 0.2.1 of the diagrams library, available now on
   [5]Hackage. This minor release which fixes a few bugs and adds a few
   new combinators, most notably a grid layout combinator contributed by
   Ganesh Sittampalam.

   Workflow-0.5.5, TCache-0.6.4 RefSerialize-0.2.4. Alberto G. Corona
   [6]announced Workflow 0.5.5. Workflow provides a monad transformer that
   encapsulates any monad in a state monad that bring automatic state
   logging and recovery. A workflow can be viewed as a thread that persist
   across planeed or unplanned application shutdowns. When recovering the
   execution is resumed at the last action that was logged. The process
   continues at the same state as if not interruption took place.

   graphviz-2999.5.1.1. Ivan Lazar Miljenovic [7]announced version
   2999.5.1.1 of the [8]graphviz library. This is another bug-fix release,
   fixing the problem spotted by Kathleen Fisher where Dot keywords need
   to be explicitly quoted if used as labels, etc. There is no change to
   the API.

   histogram-fill, library for creating histograms. Khudyakov Alexey
   [9]announced [10]histogram-fill. histogram-fill provides a generic and
   convenient API for making histograms. Features include, multiple
   simultaneous histogram creation, Immutable histograms, and
   Serialization to and from human readable text.

   Darcs Hacking Sprint - 14-15 November Vienna. Eric Kow [11]announced
   the third Darcs Hacking Sprint. Which will take place 14-15 November,
   2009 at the University of Technology, Vienna, Austria. Anybody who
   wants to hack on Darcs (or Camp, Focal, SO6, etc) -- Beginners
   especially -- are welcome!

   2nd CFP: TLDI 2010. Andrew Kennedy [12]announced a second call for
   papers for TLDI2010, the Types in Language Design and Implementation
   Workshop.

   darcs 2.3.1: better docs, fewer bugs. Reinier Lamers [13]announced a
   new stable version of darcs, with bugfixes from 2.3.0, improved
   documentation, and removal of the old autoconf build system.

   TFM09: Call for Participation (FMWeek, Eindhoven, November 2009). J.N.
   Oliveira [14]announced a Call for Participation in TFM2009 2nd Int. FME
Conference on Teaching Formal Methods Friday, November 6th 2009,
   co-located with FM2009 : 16th Int. Symposium on Formal Methods
   Eindhoven, the Netherlands, November 2 - November 6, 2009.

Discussion

   Monad Tutorial in C++. Adrian May [15]wrote a tutorial about monads in
   some other niche language...

   Beginning of a meta-Haskell. Oleg -- [16]as if he needs any
   introduction -- commented on things far above my ability to understand.
   Evidently, however, it involves extensible, modular interpreters in the
   ``tagless final'' style. It was a reply to an earlier thread [17]here.

   An issue with EDSLs in the ``finally tagless'' tradition. Brad Larsen
   [18]talked about his run in with [19]the expression problem while
   experimenting with EDSLs.

Blog noise

   [20]Haskell news from the [21]blogosphere. Blog posts from people new
   to the Haskell community are marked with , be sure to welcome them!
 * 

[Haskell-cafe] Haskell Weekly News: Issue 131 - Semptember 25, 2009

2009-09-26 Thread Joe Fredette

This week is an experiment, I'm eliminating the mail client from the sendout,
and simply using sendmail directly. If this doesn't fix the line ending problem,
then I'm pretty sure it's a software issue, and not a client issue. If you 
notice problems, please email me at this address, put [HWN] in the subject
line so my filters will catch it. Please _don't_ email me if there are no
problems.

Thanks,

/Joe

---
Haskell Weekly News
http://sequence.complete.org/hwn/20090926
Issue 133 - September 26, 2009
---
   Welcome to issue 133 of HWN, a newsletter covering developments in the
   [1]Haskell community.

   This week, we have a few new libraries, some interesting discussion
   about EDSLs, a comment from Oleg, and dons extolling the virtues of
   SCIENCE! On the new HWN software front, I've decided to jump right into
   something I had planned for far further down the development chain.
   Specifically, rather than scraping GMane for messages, I've been
   working on a way to grab the messages directly from the mailing-lists.
   I'm not entirely sure how I'm going to create links as they are now for
   the messages, but one crisis at a time. Till next week, here's the
   Haskell Weekly News!

Announcements

   epoll bindings 0.2. Toralf Wittner [2]announced the release of epoll
   bindings 0.2 available [3]here. Epoll is an I/O event notification
   facility for Linux similar to poll but with good scaling
   characteristics. This release adds a buffer abstraction on top of the
   existing low-level bindings, so client code can write and read to
   buffers without having to deal directly with the underlying epoll event
   handling.

   diagrams 0.2.1, and planned major improvements. Brent Yorgey
   [4]announced version 0.2.1 of the diagrams library, available now on
   [5]Hackage. This minor release which fixes a few bugs and adds a few
   new combinators, most notably a grid layout combinator contributed by
   Ganesh Sittampalam.

   Workflow-0.5.5, TCache-0.6.4 RefSerialize-0.2.4. Alberto G. Corona
   [6]announced Workflow 0.5.5. Workflow provides a monad transformer that
   encapsulates any monad in a state monad that bring automatic state
   logging and recovery. A workflow can be viewed as a thread that persist
   across planeed or unplanned application shutdowns. When recovering the
   execution is resumed at the last action that was logged. The process
   continues at the same state as if not interruption took place.

   graphviz-2999.5.1.1. Ivan Lazar Miljenovic [7]announced version
   2999.5.1.1 of the [8]graphviz library. This is another bug-fix release,
   fixing the problem spotted by Kathleen Fisher where Dot keywords need
   to be explicitly quoted if used as labels, etc. There is no change to
   the API.

   histogram-fill, library for creating histograms. Khudyakov Alexey
   [9]announced [10]histogram-fill. histogram-fill provides a generic and
   convenient API for making histograms. Features include, multiple
   simultaneous histogram creation, Immutable histograms, and
   Serialization to and from human readable text.

   Darcs Hacking Sprint - 14-15 November Vienna. Eric Kow [11]announced
   the third Darcs Hacking Sprint. Which will take place 14-15 November,
   2009 at the University of Technology, Vienna, Austria. Anybody who
   wants to hack on Darcs (or Camp, Focal, SO6, etc) -- Beginners
   especially -- are welcome!

   2nd CFP: TLDI 2010. Andrew Kennedy [12]announced a second call for
   papers for TLDI2010, the Types in Language Design and Implementation
   Workshop.

   darcs 2.3.1: better docs, fewer bugs. Reinier Lamers [13]announced a
   new stable version of darcs, with bugfixes from 2.3.0, improved
   documentation, and removal of the old autoconf build system.

   TFM09: Call for Participation (FMWeek, Eindhoven, November 2009). J.N.
   Oliveira [14]announced a Call for Participation in TFM2009 2nd Int. FME
Conference on Teaching Formal Methods Friday, November 6th 2009,
   co-located with FM2009 : 16th Int. Symposium on Formal Methods
   Eindhoven, the Netherlands, November 2 - November 6, 2009.

Discussion

   Monad Tutorial in C++. Adrian May [15]wrote a tutorial about monads in
   some other niche language...

   Beginning of a meta-Haskell. Oleg -- [16]as if he needs any
   introduction -- commented on things far above my ability to understand.
   Evidently, however, it involves extensible, modular interpreters in the
   ``tagless final'' style. It was a reply to an earlier thread [17]here.

   An issue with EDSLs in the ``finally tagless'' tradition. Brad Larsen
   [18]talked about his run in with [19]the expression problem while
   experimenting with EDSLs.

Blog noise

   [20]Haskell news from the [21]blogosphere. Blog posts from people new
   to the Haskell community are marked with , be sure to welcome them!
 * 

[Haskell-cafe] Haskell Weekly News: Issue 131 - Semptember 25, 2009

2009-09-26 Thread Joe Fredette

This week is an experiment, I'm eliminating the mail client from the sendout,
and simply using sendmail directly. If this doesn't fix the line ending problem,
then I'm pretty sure it's a software issue, and not a client issue. If you 
notice problems, please email me at this address, put [HWN] in the subject
line so my filters will catch it. Please _don't_ email me if there are no
problems.

Thanks,

/Joe

---
Haskell Weekly News
http://sequence.complete.org/hwn/20090926
Issue 133 - September 26, 2009
---
   Welcome to issue 133 of HWN, a newsletter covering developments in the
   [1]Haskell community.

   This week, we have a few new libraries, some interesting discussion
   about EDSLs, a comment from Oleg, and dons extolling the virtues of
   SCIENCE! On the new HWN software front, I've decided to jump right into
   something I had planned for far further down the development chain.
   Specifically, rather than scraping GMane for messages, I've been
   working on a way to grab the messages directly from the mailing-lists.
   I'm not entirely sure how I'm going to create links as they are now for
   the messages, but one crisis at a time. Till next week, here's the
   Haskell Weekly News!

Announcements

   epoll bindings 0.2. Toralf Wittner [2]announced the release of epoll
   bindings 0.2 available [3]here. Epoll is an I/O event notification
   facility for Linux similar to poll but with good scaling
   characteristics. This release adds a buffer abstraction on top of the
   existing low-level bindings, so client code can write and read to
   buffers without having to deal directly with the underlying epoll event
   handling.

   diagrams 0.2.1, and planned major improvements. Brent Yorgey
   [4]announced version 0.2.1 of the diagrams library, available now on
   [5]Hackage. This minor release which fixes a few bugs and adds a few
   new combinators, most notably a grid layout combinator contributed by
   Ganesh Sittampalam.

   Workflow-0.5.5, TCache-0.6.4 RefSerialize-0.2.4. Alberto G. Corona
   [6]announced Workflow 0.5.5. Workflow provides a monad transformer that
   encapsulates any monad in a state monad that bring automatic state
   logging and recovery. A workflow can be viewed as a thread that persist
   across planeed or unplanned application shutdowns. When recovering the
   execution is resumed at the last action that was logged. The process
   continues at the same state as if not interruption took place.

   graphviz-2999.5.1.1. Ivan Lazar Miljenovic [7]announced version
   2999.5.1.1 of the [8]graphviz library. This is another bug-fix release,
   fixing the problem spotted by Kathleen Fisher where Dot keywords need
   to be explicitly quoted if used as labels, etc. There is no change to
   the API.

   histogram-fill, library for creating histograms. Khudyakov Alexey
   [9]announced [10]histogram-fill. histogram-fill provides a generic and
   convenient API for making histograms. Features include, multiple
   simultaneous histogram creation, Immutable histograms, and
   Serialization to and from human readable text.

   Darcs Hacking Sprint - 14-15 November Vienna. Eric Kow [11]announced
   the third Darcs Hacking Sprint. Which will take place 14-15 November,
   2009 at the University of Technology, Vienna, Austria. Anybody who
   wants to hack on Darcs (or Camp, Focal, SO6, etc) -- Beginners
   especially -- are welcome!

   2nd CFP: TLDI 2010. Andrew Kennedy [12]announced a second call for
   papers for TLDI2010, the Types in Language Design and Implementation
   Workshop.

   darcs 2.3.1: better docs, fewer bugs. Reinier Lamers [13]announced a
   new stable version of darcs, with bugfixes from 2.3.0, improved
   documentation, and removal of the old autoconf build system.

   TFM09: Call for Participation (FMWeek, Eindhoven, November 2009). J.N.
   Oliveira [14]announced a Call for Participation in TFM2009 2nd Int. FME
Conference on Teaching Formal Methods Friday, November 6th 2009,
   co-located with FM2009 : 16th Int. Symposium on Formal Methods
   Eindhoven, the Netherlands, November 2 - November 6, 2009.

Discussion

   Monad Tutorial in C++. Adrian May [15]wrote a tutorial about monads in
   some other niche language...

   Beginning of a meta-Haskell. Oleg -- [16]as if he needs any
   introduction -- commented on things far above my ability to understand.
   Evidently, however, it involves extensible, modular interpreters in the
   ``tagless final'' style. It was a reply to an earlier thread [17]here.

   An issue with EDSLs in the ``finally tagless'' tradition. Brad Larsen
   [18]talked about his run in with [19]the expression problem while
   experimenting with EDSLs.

Blog noise

   [20]Haskell news from the [21]blogosphere. Blog posts from people new
   to the Haskell community are marked with , be sure to welcome them!
 * 

Re: [Haskell-cafe] Haskell Weekly News: Issue 131 - September 19, 2009

2009-09-20 Thread Joe Fredette
Ahh, I found the issue. I generated this on the 18th, the software  
makes files of the form yearmonthdate.ext, so when Brent  
uploaded the hwn for me, the link it generates is to the date it was  
generated on, not the date it was published on.


The appropriate link is

http://sequence.complete.org/hwn/20090919

In the future, I'll have to make sure to do the `make` on the date of  
publication, but ATM I don't have access to the sequence.complete.org  
to post the hwns myself. So I try to get the issue to Brent a day early.


It shouldn't happen again, thanks for catching it.

/Joe

On Sep 20, 2009, at 3:06 PM, Andrew Coppin wrote:


http://sequence.complete.org/hwn/20090918


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


Re: [Haskell-cafe] Cabal packages - cabbages

2009-09-20 Thread Joe Fredette

I also agree. Hackage should also be renamed to something appropriate.

The Cabbage Patch?


On Sep 20, 2009, at 6:12 PM, Jeff Wheeler wrote:

On Sun, Sep 20, 2009 at 5:11 PM, Jason Dusek jason.du...@gmail.com  
wrote:



 Some day, we're going to need a short, catchy name for Cabal
 packages. Let's call them cabbages.


+1

Yes, let's.

Jeff Wheeler
___
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] Haskell Weekly News: Issue 131 - September 19, 2009

2009-09-19 Thread Joe Fredette
Hopefully the line endings come out okay this week, I did a test  
before sending it to the list, please let me know if you notice  
anything awry. Just put a [HWN] in the subject line so my filter's  
will catch it. /metaeditorial


---
Haskell Weekly News
http://sequence.complete.org/hwn/20090918
Issue 131 - September 18, 2009
---
   Welcome to issue 131 of HWN, a newsletter covering developments in  
the

   [1]Haskell community.

   Last week, I received an email from Mark Wotton about his project
   [2]Hubris. I totally forgot to put it in the HWN last week, too busy
   trying to figure out all the tools. So, I thought I'd make it up and
   give him some special editorial status this week. Hubris is a bridge
   between Ruby and Haskell, allowing you to call Haskell from Ruby.  
It's
   very cool, I highly suggest playing with it. Also, I've been  
posting a

   bit about the new HWN tools (dubbed HWN2) on my [3]blog, there is
   also a repo up at [4]patch-tag which will have all the code. If  
there

   is some interest in helping me, I'll try to come up with a TODO
   list/Trac.

Announcements

   hssqlppp, sql parser and type checker, pre-alpha. Jake Wheat
   [5]announced his parser/type checker for SQL. It currently parses a
   subset of PostGreSQL and PL/pgSQL, and can type check some  
statements.


   LambdaINet-0.1.0, Graphical Interaction Net Evaluator for Optimal
   Evaluation. Paul L [6]announced a LambdaINet 0.1.0, available on
   [7]Hackage. LambdaINet implements an interaction net based optimal
   evaluator. With an interactive graphical interface allowing the  
user to

   view and directly manipulate the interaction net.

   arbtt-0.1. Joachim Breitner [8]announced the Automatic Rule-Based  
Time

   Tracking tool on hackage. he has an introduction available [9]here.

   A statistics library. Bryan O'Sullivan [10]announced the  
imaginatively

   named [11]statistics library. Which supports common discrete and
   continuous probability distributions, Kernel density estimation,
   Auto-correlation analysis, Functions over sample data, Quantile
   estimation, and Re-sampling techniques.

   CFP: JSC Special Issue on Automated Verification and Specification  
of
   Web Systems. [12]A Special Issue of the Journal of symbolic  
computation

   was announced. This issue is related to the topics of the Automated
   Specification and Verification of Web Systems Workshop (WWV'09).  
Read

   the announcement for more details.

   Haskeline 0.6.2. Judah Jacobson [13]announced the release of  
Haskeline
   0.6.2, available [14]here. Improvements over the last version  
include,
   new emacs and vi bindings, a new preference to remove repeated  
history

   entries, recognition of page-up and page-down keys, and more.

   PEPM'10 - Last CFP (Submission: 6 Oct 09, Notification: 29 Oct 09).
   Janis Voigtlaender [15]announced the Last Call for Papers for  
PEPM'10,

   see the announcement for more details.

   Videos of HIW 2009. Malcolm Wallace [16]announced videos of all the
   presentations/discussions at the recent Haskell Implementers  
Workshop

   2009, in Edinburgh, are now [17]online. The program of talks is
   available [18]here.

   Unification in a Commutative Monoid (cmu 1.1) and a new release of
   Abelian group unification and matching (agum 2.2). John D. Ramsdell
   [19]announced cmu 1.1, which provides unification in a commutative
   monoid, also know as ACU-unification. The core computation finds the
   minimal non-zero solutions to homogeneous linear Diophantine  
equations.

   The linear equation solver has been place in a separate module so it
   can be used for other applications. He also announced agum 2.2,  
which

   provides unification and matching in an Abelian group, also know as
   AG-unification and matching.

   graphviz-2999.5.1.0. Ivan Lazar Miljenovic [20]announced a bug-fix
   release of the GraphViz package, no major API changes occurred.

   levmar-0.2, bindings-levmar-0.1.1. Bas van Dijk and Roel van Dijk
   announced [21]new [22]versions of the levmar and bindings-levmar
   packages. New features include automatic calculation of the Jacobian
   via Conal Elliot's automatic differentiation from his vector-space
   library.

   CmdArgs - easy command line argument processing. Neil Mitchell
   [23]announced CmdArgs 0.1. CmdArgs is a library for parsing
   command-line arguments. It offers several improvements over GetOpts,
   namely that the Command Line Argument Processors are shorter and
   CmdArgs can support multiple-mode command lines such as those  
found in

   darcs, cabal, hpc, etc.

   OpenGL 2.4.0.1. Sven Panne [24]announced a new version of the OpenGL
   package, this version fixes a bug that didn't make it into the  
previous

   release.

   OpenGLRaw 1.1.0.0. Sven Panne [25]announced a new version of the
 

Re: [Haskell-cafe] Community.haskell.org is down

2009-09-13 Thread Joe Fredette
Confirmed for me, I actually have no idea who owns C.H.O, but a WHOIS  
gives the Yale University Comp. Sci. Dept. Haskell Group as the  
registrant, maybe someone over there needs to take a look?


/Joe

On Sep 13, 2009, at 1:17 PM, Neil Mitchell wrote:


Hi,

http://community.haskell.org/ seems to be down for me. In general, who
should this be reported to?

Thanks

Neil
___
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] Haskell Weekly News: Issue 130 - September 12, 2009

2009-09-12 Thread Joe Fredette

---
Haskell Weekly News
http://sequence.complete.org/hwn/20090912
Issue 130 - September 12, 2009
---
   Welcome to issue 130 of HWN, a newsletter covering developments in  
the

   [1]Haskell community.

   Welcome to issue 130 of HWN! In the last week, HWN has gotten a new
   editor, me! I'm Joe Fredette (jfredett on IRC, reddit, and  
everywhere
   else), and I'll be taking over for Brent (byorgey) from now on. I  
think
   I speak for the whole community when I thank him for his excellent  
work
   on the HWN and associated tools. I have a few ideas about how I  
want to

   change HWN for the better, and hopefully you'll like them too! So,
   without further ado, The Haskell Weekly News!

Announcements

   Looking for a new HWN editor. Brent Yorgey [2]went looking for a new
   editor for the HWN, and that's how you got me! See the editorial for
   more details.

   CfPart: FMICS 2009, 2-3 November 2009. Christophe Joubert  
[3]announced
   FMICS 2009 - FIRST CALL FOR PARTICIPATION, 14th International  
Workshop
   on Formal Methods for Industrial Critical Systems. November 2-3,  
2009


   Call for Posters: APLAS 2009. Kiminori Matsuzaki [4]announced a CALL
   FOR POSTER PRESENTATIONS The Seventh ASIAN Symposium on Programming
   Languages and Systems (APLAS 2009) December 14 - 16, 2009 Seoul
   National University, Seoul, Korea.

   hecc-0.1. Marcel Fourné [5]announced the first release of hecc,  
the

   Elliptic Curve Cryptography Library for Haskell. Implemented are
   affine, projective, jacobian and modified jacobian point formats  
with
   the basic operations. Included as an Example is a basic ECDH as  
well as

   a basic speed test.

   HLint 1.6.8. Neil Mitchell [6]announced HLint 1.6.8. HLint is a tool
   for suggesting improvements to your source code. It suggests the  
use of

   library functions you may have been unaware of, finds patterns of
   recursion that are really folds/maps, hints about extensions you  
aren't

   using and much more. HLint is now one of the top 20 applications on
   Hackage, and is used by the darcs project to improve and statically
   check their code base.

   A Levenberg-Marquardt implementation. Bas van Dijk [7]announced the
   release of a Haskell binding to Manolis Lourakis's C levmar library.
   This library implements the Levenberg-Marquardt algorithm which is  
an

   iterative technique that finds a local minimum of a function that is
   expressed as the sum of squares of nonlinear functions. It has  
become a

   standard technique for nonlinear least-squares problems and can be
   thought of as a combination of steepest descent and the Gauss-Newton
   method.

   CCA-0.1. Paul L [8]announced that a library for Causal Commutative
   Arrows (CCA) has been uploaded to Hackage DB. It implements CCA
   normalization using Template Haskell and a modified arrow pre- 
processor
   (based on arrowp) to generate outout that Template Haskell can  
parse.

   It's highly experimental since we are still fiddling with several
   design choices, and by no means we imply Template Haskell is the  
best

   choice to implement CCA. Any suggestion or comment is welcome!

   graphviz-2999.5.0.0. Ivan Lazar Miljenovic [9]announced version
   2999.5.0.0 of the graphviz package for Haskell. This is what I  
like to
   think of as the 'Hey, this is almost getting to be a decent  
library!'
   version. The graphviz package provides bindings to the GraphViz  
suite
   of programs by providing the ability to generate and parse  
GraphViz's

   Dot language as well as wrappers around the tools themselves.

   uvector-algorithms 0.2. Dan Doel [10]announced version 0.2 of the
   uvector-algorithms package. The package so far has implementations  
of
   several sorting and selection algorithms for use on the mutable  
arrays
   from the uvector library, as well as combinators for applying them  
to

   immutable arrays.

   dbmigrations 0.1. Jonathan Daugherty [11]announced dbmigrations, A
   library and program for the creation, management, and installation  
of

   schema updates (called migrations) for a relational database. In
   particular, this package lets the migration author express explicit
   dependencies between migrations and the management tool  
automatically

   installs or reverts migrations accordingly, using transactions for
   safety. This package is written to support any HDBC-supported  
database,

   although at present only PostgreSQL is fully supported.

   Palindromes 0.1. Johan Jeuring [12]announced Palindromes, a  
package for

   finding palindromes in files. Visit the [13]homepage The primary
   features of Palindromes include: A linear-time algorithm for finding
   exact palindromes, A linear-time algorithm for finding text
   palindromes, ignoring spaces, case of characters, and punctuation
   symbols

Re: [Haskell-cafe] Hackage and version control

2009-07-20 Thread Joe Fredette

Don't forget about Patch-tag!

Bulat Ziganshin wrote:

Hello Vasili,

Monday, July 20, 2009, 12:26:52 PM, you wrote:

  

 It seems to me that Hackage doesn't provide version control,
e.g. check out and check in. Am I incorrect?



i recommend you to use either codeplex or code.google


  
begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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


Re: [Haskell-cafe] RE: Haskell as a first language?

2009-07-14 Thread Joe Fredette
If only for the fact that our little Haskell community is composed of 
about the nicest set of people ever -- I mean, try asking a newbie 
question on #c sometime -- then Haskell is a great language to learn early.


Not only is it great because of it's community, but it's also full of 
resources -- there are plenty of fun and interesting tutorials to learn 
with, among the best are Real World Haskell -- it's actually a print 
book, but you can read it in it's entirety online, give it a google. 
There's also a nice tutorial called, Learn you a Haskell for Great 
Good (or something like that), I've heard good things about it.


By far the best things you can do are subscribe to the Haskell-Cafe 
mailing list, and get yourself in the #haskell chatroom on freenode. I 
believe it was Mrs. Frizzle who said it best, Ask Questions, Make 
Mistakes, get Haskell-y!!!


/Joe

Simon Peyton-Jones wrote:

Haskell is a great language!  Check out haskell.org.   I'm ccing the Haskell 
Cafe which is read by many people better qualified to answer your question than 
me.   (Since I've been working on Haskell for many years, I am not well 
qualified to say how it seems to a beginner.)

S

| -Original Message-
| From: Charles Turner [mailto:charlie.h.tur...@googlemail.com]
| Sent: 11 July 2009 22:52
| To: Simon Peyton-Jones
| Subject: Haskell as a first language?
| 
| I'll make this short! Do you think Haskell is a good language to start

| with? I am brand new to programming and have been using Scheme, some of
| my peers suggest I should use Haskell. It seems professional to me.
| Has features that a beginner should not worry about. What would you
| suggest. (I'm not worried about bias)
| 
| Thank you very much for your time.
| 
| Charles Turner.


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

  
begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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


Re: [Haskell-cafe] How to declare a Typeless Function

2009-07-03 Thread Joe Fredette
It's important to note that such a function is not Typeless but rather 
Polymorphic -- that is, it is a type which can be satisfied for many 
values of it's type variables.


For instance, the function `(+) :: Num a = a - a - a` is polymorphic, 
since it's one type variable can be satisfied by any instance of the 
`Num` class. It's not that
the `(+)` function is Typeless (implying that it has no type) 
precisely the opposite, it has _many_ types. Haskell is clever enough to 
figure out which one you mean as you use it (most of the time, anyway).


/Joe

Magnus Therning wrote:

On Fri, Jul 3, 2009 at 4:43 AM, Alexander
Dunlapalexander.dun...@gmail.com wrote:
  

swap :: Array (Int, Int) a - [Int] - Array (Int, Int) a

The lowercase a means that that type variable is polymorphic, i.e.
it can be any type.



Another option would be to simply not put in type of 'swap', load it
in ghci and see what the compiler says the type is :-)

/M

  

On Thu, Jul 2, 2009 at 8:05 PM, Fernan Bolandofernanbola...@mailc.net wrote:


Hi

I have a function that swaps rows of an array of double

swap :: Array (Int,Int) Double - [Int] - Array (Int,Int) Double

I then create a function that swaps rows of arrays of Complex Double

swap :: Array (Int, Int) (Complex Double) - [Int] - Array (Int, Int)
(Complex Double)

In reality the function swap does not care whether its working on a
double or a complex number.
how do I declare swap so that it will work whether it's a complex or a
double array.

I tried googling but I wasn't sure what to google.

fernan
--
http://www.fernski.com
___
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






  
begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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


Re: [Haskell-cafe] Breaking ghci

2009-06-29 Thread Joe Fredette

Code or it didn't happen. :)

GüŸnther Schmidt wrote:

Hi folks,

I would like to announce that I have not merely managed to make the 
RTS choke during runtime on stack overflows like lesser programmers, 
no, *I* have managed to write code that ghc is not even able to 
compile due to exhausting virtual memory!


Top that!

Günther

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

begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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


Re: [Haskell-cafe] What is an expected type ...

2009-06-28 Thread Joe Fredette
When Haskell runs it's type checker, it tries to guess the type of 
each function. Thats why you can write:


   map (+1)

and it knows that you're talking about a function of type:

   Num a = [a] - [a]

Another thing, called 'defaulting' resolves this, but you didn't ask 
about that, so I won't go into it.


An expected type is one that you provide to the compiler in the form of 
a type signature, this can be used to specialize a general type (like 
the one I showed) or
to resolve ambiguous types the compiler can't, or just for 
documentation/good practice. So when I write:


   foo :: Num a = [a] - [a]
   foo ls = map (+1) ls

The expected type for `foo` is `Num a = [a] - [a]`. I imagine you're 
asking this because you got an error which said your expected type 
doesn't match your inferred type. That might, for instance, happen if I 
wrote:


   bar :: String
   bar = 'a'

'a' has type `Char`, since `String` is not `Char`, the type checker 
infers that 'a' has type char, but _expects_ it to be type String. Two 
solutions are as follows:


   --- Method 1
   bar :: Char
   bar = 'a'
   --- Method 2
   bar :: String
   bar = a

Can you see why those two changes fix the problem?


Also, just as a matter of process, I forwarded this to the 
haskell-beginners list, as I imagine type errors like these come up a 
lot, and someone probably has a better explanation over there.


/Joe


michael rice wrote:

as opposed to an inferred type?

Michael




___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
  
begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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


Re: [Haskell-cafe] Why are these record accesses ambiguous

2009-06-06 Thread Joe Fredette
The error is because of the way records work in Haskell. Recall that a 
record is just sugar for the normal datatype syntax. Namely:


   data FooA a b c = FooA {getA :: a, getB:: b, getC :: c}

can be accessed as either

   f (FooA a b c) = ...

or

  f fooA = ... (getA fooA) ... etc

That is, Record syntax just creates functions for each label that take a 
record and return the content of that label. eg


   getA :: FooA a b c - a
   getA (FooA a _ _ ) = a
   ...

So when you have two records with the same label in it:

   data Bar = Bar { badlabel :: Int }
   data Baz = Baz { badlabel :: String }

even though they are not the same type, you end up with the following 
definitions:


badlabel :: Bar - Int
badlabel :: Baz - String

this is a type error, one that is not trivially resolved. Thats where 
your problem is coming from, two fields both named `x` which result in 
this error.



HTH,

/Joe



John Ky wrote:

Hi Luke,

You're right.  My code had a typo.  Unfortunately, I still get the 
same error whichever way I do it.


For example:

 {-# LANGUAGE DisambiguateRecordFields #-}
 import A
 import B

 main = do
let xx = getA
print (x xx)

and:

#!/usr/bin/env runhaskell

 {-# LANGUAGE DisambiguateRecordFields #-}
 import A
 import B

 main = do
let xx = getA
putStrLn $ show (x xx)

both give me:

test.lhs:8:22:
Ambiguous occurrence `x'
It could refer to either `A.x', imported from A at test.lhs:3:2-9
  (defined at A.hs:5:5)
  or `B.x', imported from B at test.lhs:4:2-9
  (defined at B.hs:5:5)

Any ideas?

$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 6.10.3

Thanks,

-John

On Sat, Jun 6, 2009 at 6:41 PM, Luke Palmer lrpal...@gmail.com 
mailto:lrpal...@gmail.com wrote:


On Sat, Jun 6, 2009 at 1:48 AM, John Ky newho...@gmail.com
mailto:newho...@gmail.com wrote:

Hi Haskell Cafe,

In the following code, I get an error saying Ambiguous
occurrence `x'.  Why can't Haskell work out which x to call
based on the type of getA?

Thanks

-John

#!/usr/bin/env runhaskell

 {-# LANGUAGE DisambiguateRecordFields #-}
 import A
 import B

 main = do
let xx = getA
putStrLn $ show x xx


This is parsed as two arguments passed to the show function (which
only takes one argument).

putStrLn $ show (x xx)

Or because putStrLn . show = print;

print $ x xx
 




--

module A where

data TypeA = TypeA
   { a :: Int
   , x :: Int
   }

getA = TypeA { a = 1, x = 2 }

-

module B where

data TypeB = TypeB
   { b :: Int
   , x :: Int
   }

getB = TypeB { b = 1, x = 3 }

--

./test.lhs:8:21:
Ambiguous occurrence `x'
It could refer to either `A.x', imported from A at
./test.lhs:3:2-9
  (defined at A.hs:5:5)
  or `B.x', imported from B at
./test.lhs:4:2-9
  (defined at B.hs:5:5)


___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org mailto: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
  
begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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


Re: [Haskell-cafe] Haskell in 3 Slides

2009-05-18 Thread Joe Fredette
While an incredibly small font is a clever option, a more serious 
suggestion may be as follows.


3-4 slides imply 3-4 topics, so the question is what are the 3-4 biggest 
topics in haskell? I would think they would be:


* Purity/Referential Transparency
* Lazy Evaluation
* Strong Typing + Type Classes
* Monads

Assuming you have, say, 10-15 minutes for the talk, and the people there 
are versed with imperative programming and maybe have some experience in 
functional programming, you can probably jump over each of those slides 
in about a minute, just enough to touch the subject.


I also assume that you don't need to fit the whole presentation in 3-4 
slides, if you do, then  yah.



/Joe


David Leimbach wrote:

Use an incredibly small font.

On Mon, May 18, 2009 at 8:16 AM, John Van Enk vane...@gmail.com 
mailto:vane...@gmail.com wrote:


Hi all,
 
I'm giving a presentation to an IEEE group on Embedded DSL's and

Haskell at the end of June. I need a 3 to 4 slide introduction to
Haskell. What suggestions does the community have? Is such a short
intro possible?
 
It just needs to introduce the basics so I can show some code

without alienating the audience. I'm hoping some one else has
attempted this before, but if not, some boiler plate slides could
be useful for every one!

-- 
/jve


___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org mailto: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
  
begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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


Re: [Haskell-cafe] Haskell in 3 Slides

2009-05-18 Thread Joe Fredette
Well, since the topic was EDSLs, and those generally involve monads (at 
least from what I've seen), it might be wise to touch on them. However, 
perhaps the fourth slide would just be a catchall? HOFs, some STM/Monad 
stuff, etc? The topics I suggested just seem to me to be the 4 core 
concepts you must understand to use haskell effectively.


/joe

Eugene Kirpichov wrote:

Actually, I don't think it's a good idea to introduce monads on one of
the 3-4 slides. While it *is* a core concept, it's not one of the
advertising bullet points; and 1 slide is not enough to show what
*use* monads are, let alone what they actually *are*.

I'd probably suggest you to show something parallelism-related on that
slide: for example, STM. Showing an atomically do foo and saying
And here, we atomically do foo may turn out impressive :)

And yes, of course HOF's.

Also, on the Strong Typing slide, probably you could fit in an
algebraic datatype and a smallish function over it in pattern-matched
style.

2009/5/18 Joe Fredette jfred...@gmail.com:
  

While an incredibly small font is a clever option, a more serious suggestion
may be as follows.

3-4 slides imply 3-4 topics, so the question is what are the 3-4 biggest
topics in haskell? I would think they would be:

* Purity/Referential Transparency
* Lazy Evaluation
* Strong Typing + Type Classes
* Monads

Assuming you have, say, 10-15 minutes for the talk, and the people there are
versed with imperative programming and maybe have some experience in
functional programming, you can probably jump over each of those slides in
about a minute, just enough to touch the subject.

I also assume that you don't need to fit the whole presentation in 3-4
slides, if you do, then  yah.


/Joe


David Leimbach wrote:


Use an incredibly small font.

On Mon, May 18, 2009 at 8:16 AM, John Van Enk vane...@gmail.com
mailto:vane...@gmail.com wrote:

   Hi all,
   I'm giving a presentation to an IEEE group on Embedded DSL's and
   Haskell at the end of June. I need a 3 to 4 slide introduction to
   Haskell. What suggestions does the community have? Is such a short
   intro possible?
   It just needs to introduce the basics so I can show some code
   without alienating the audience. I'm hoping some one else has
   attempted this before, but if not, some boiler plate slides could
   be useful for every one!

   --/jve

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




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

  

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







  
begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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


Re: [Haskell-cafe] Free theorems for dependent types?

2009-05-17 Thread Joe Fredette
This word has piqued my interest, I've hear it tossed around the 
community quite a bit, but never fully understood what it meant. What 
exactly is a 'free theorem'?


Eugene Kirpichov wrote:

Hello,

Is there any research on applying free theorems / parametricity to
type systems more complex than System F; namely, Fomega, or calculus
of constructions and alike?

This seems very promising to me for the following reason: Take the
free theorem for 'sort::(a-a-Bool)-[a]-[a]'. The theorem could
possibly be a lot more powerful if there were a way to encode in the
type of 'sort' that it accepts a reflexive transitive antisymmetric
predicate, but the only way to express that is with dependent types.

Looks like the only thing one needs to add to System F is the
relational translation rule for a dependent product; but I haven't
tried doing it myself.

  
begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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


Re: [Haskell-cafe] is value evaluated?

2009-05-08 Thread Joe Fredette
That must have been the vibe I was getting. My haskell-spider senses 
were tingling, I just overshot RT and went for the Halting Problem.


/Joe

Brandon S. Allbery KF8NH wrote:

On May 8, 2009, at 01:33 , Joe Fredette wrote:
That strikes me as being bad in a I'm violating the Halting Problem 
sort of way- but I'm not sure how. Is there some contradictory 
construction that

could be built from such a function?


I don't think it is; surely the Haskell runtime knows which thunks it 
has evaluated.  It just explicitly violates referential transparency, 
and therefore must be in IO.  You may be thinking that it would return 
a result for _|_, but as described if you fed it _|_ it could only 
produce False (if the _|_ has been evaluated you would not be able to 
reach the test).


begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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


Re: [Haskell-cafe] is value evaluated?

2009-05-07 Thread Joe Fredette
That strikes me as being bad in a I'm violating the Halting Problem 
sort of way- but I'm not sure how. Is there some contradictory 
construction that

could be built from such a function?

Nikhil Patil wrote:
Hi, 


I am curious to know if there is a function in Haskell to find if a certain
value has already been evaluated. The function I need would have the type:

  

(?!) :: a - Bool



And I expect it to be such that the following terminates after printing the
first 101 fibonacci numbers.

  

fibs = 0 : 1 : zipWith (+) fibs (tail fibs)

main = do print $ fibs !! 100
  print $ takeWhile (?!) fibs



Although I guess I can imagine the following not terminating:

  

  print $ filter (?!) fibs



I would find such a function immensely useful in printing out my infinite 
lists.

Thanks!

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

  
begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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


Re: [Haskell-cafe] [ANN] Hack: a sexy Haskell Webserver Interface ^^

2009-04-20 Thread Joe Fredette

We need to start referring to more haskell packages as sexy

/Joe

Jinjing Wang wrote:

Simplest app should look like this

module Main where

import Hack
import Hack.Handler.Kibro

hello :: Application
hello = \env - return $ Response
{ status  = 200
, headers = [ (Content-Type, text/plain) ]
, body= Hello World
}

main = run hello

Hack is a brainless port of the brilliant Ruby Rack framework. Rack is
very modular and that's
very important.

Rack utilities and middlewares should be able to be ported with
minimal effort, I hope.

link / source: http://github.com/nfjinjing/hack/tree/master

  
begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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


[Haskell-cafe] ANN: HackMail 0.0 -- Procmail + Monads = Awesome!

2009-03-27 Thread Joe Fredette

I'm happy to announce my very second Hackage upload!*

HackMail is a Procmail-alike, though it doesn't (yet) support promail 
syntax. It dynamically loads a haskell source file (literate or vanilla, 
eithers okay) and then sits as a daemon watching a directory for new 
emails. The source file contains a function which sorts email and 
delivers it to some directory. As well as some configuration data.


Not everything is working just yet -- the program is operational, but 
still lacking some of the features I want, namely a pipe mode, and some 
other things. It also uses a homebrew email parser, and lacks Haddock 
and Tests, but I wanted to release it mostly for 
comments/questions/helpful criticism from interested parties.


Also, I wanted to upload something to hackage... It's a good feeling.

Questions/Comments/Donations of Money, Vestal Virgins, or Cookies welcome!

Package is on Hackage @
   http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HackMail
Source is on Patch-tag @
   http://patch-tag.com/repo/Hackmail
  
/Joe Fredette






* (I uploaded a little tool called addLicenseInfo to test out the 
procedure, so... yah.)
begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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


Re: [Haskell-cafe] .hi inconsistency bug.

2009-03-18 Thread Joe Fredette
Oh- I see, so The portion of code I have to interpret is already 
separated -- it's not even compiled. The only interpreted code is a 
configuration file in the users home directory. It needs to import some 
chunk of the library (namely, MainTypes and Deliverable) so as to be 
able to export a single routine (filterMain) which gets interpreted at 
run time. But as it stands, I don't even get as far as running that 
code. The problem lies solely in MainTypes proper, which has no dynamic 
code in it or even associated with it. I tried compiling separately and 
together, no dice either way. Somehow, the Email datatype isn't being 
exported from ParseEmail.


However, wrt this:

 and set the source path to plugins directory (using something like 
unsafeSetGhcOption -i./plugins, or set [searchPath

 := [./plugins]], if using the darcs version).

I don't think my hint-related code does this- since my Hint code is 
entirely:


   -- Returns a pair, a path to the inbox location (where new emails 
enter the system) and also
   -- a Filter, the filter delivers (it's a Reader + IO monad) the 
email based on the config+options.

   getFilterMainStuff :: FilePath - Interpreter (Path, Filter ())
   getFilterMainStuff fMainLoc = do
   loadModules [fMainLoc]; setTopLevelModules [(takeWhile 
(/='.') fMainLoc)]

   inboxL - parse $ interpret (inboxLoc) infer
   fMain  - (interpret (filterMain) infer)
   return (inboxL, fMain) 

That is, I load a module, set the TopLevel to include that module, read 
two functions out of that module (one containing the location of the 
inbox to poll, on with the filtering main function) and return them. I 
don't think I need to set any search paths, since fMainLoc is a full 
path. Could this be where my problem is?


Really, I'm just trying to isolate whether it's really Hint causing the 
problem, or something else, because I could always do what xmonad does 
wrt to this- which is (from what I can tell) statically import your 
config file from a given location, which would alleviate all of this, if 
the problem is hint. Perhaps I'll just try that in any case... see if it 
helps.


Thanks again Daniel,

/Joe

Daniel Gorín wrote:
So, if I understand correctly, the interpreter is compiling MainTypes 
twice?


No, the interpreter is trying to compile types that were already 
compiled by the compiler when building your application. The resulting 
types are incompatible.


Could this be a result of having two outputs (one executable and one 
library) in my .cabal file? it _does_ compile those things twice... 
If I create a second cabal file which separates these two different 
packages, would that fix it?


I don't think so. If you already have your application split in 
library part + executable part, then everything should be fine (as 
long as the library is installed before running your application).


The issue is, the (dynamic) interpreter part of my code is part of 
the main loop of the program, and is (as far as I can see) 
inseparable from the rest of the code.


What you need to separate is the code you are planning to interpret in 
runtime. For example, say you have:


src/HackMail/Main.hs
src/HackMail/Data/Types.hs
src/SomePlugin.hs

and SomePlugin.hs is loaded by the interpreter, then you may want to 
reorganize your files like

this:

src/HackMail/Main.hs
src/HackMail/Data/Types.hs
plugins/SomePlugin.hs

and set the source path to plugins directory (using something like 
unsafeSetGhcOption -i./plugins, or set [searchPath := 
[./plugins]], if using the darcs version).


Daniel

I'll give the cabal thing a try, given the incredible triviality of 
doing everything with cabal, I should be done testing the solution 
before I hit the send button... Cabal guys, you rock.


Thanks again, Dan.

/Joe

Daniel Gorín wrote:

Hi

Just a wild guess but maybe the interpreter is recompiling (in 
runtime) code that has already been compiled to build your 
application (in compile-time). This may lead to inconsistencies 
since a type such as HackMail.Data.Main.Types.Filter may refer to 
two different (and incompatible) types.


To see if this is the case, make sure your dynamic code is not 
located together with your base code (i.e., move it to another 
directory, and set the src file directory for the interpreter 
accordingly). Now you may get another runtime error, something along 
the lines of Module not found: HackMail.Data.MainTypes. This 
basically means that you need to make your (already compiled) types 
available to the interpreter. I think the simplest way is to put all 
your support types in a package, register it with ghc, link your 
application to it, and ask the interpreter to use this package (with 
a -package  flag).


Hope this helps!

Daniel

On Mar 17, 2009, at 11:52 PM, Joe Fredette wrote:


List,

I've got this project, source on patch-tag here[1]

It's a nice little project, I've got the whole thing roughly 
working, it compiles okay, everything

Re: [Haskell-cafe] .hi inconsistency bug.

2009-03-18 Thread Joe Fredette
I seem to have fixed this bug, only to find another- the issue was that 
I misunderstood what Cabal means by exposed modules upon exposing all 
of the modules MainTypes uses, the problem resolved itself. I now have 
another problem, having to do with importing the file from 
$HOME/.hackmail, but I'm going to take a crack at it before bothering 
the list again. Thanks very much Daniel,


/Joe

Daniel Gorín wrote:
So, if I understand correctly, the interpreter is compiling MainTypes 
twice?


No, the interpreter is trying to compile types that were already 
compiled by the compiler when building your application. The resulting 
types are incompatible.


Could this be a result of having two outputs (one executable and one 
library) in my .cabal file? it _does_ compile those things twice... 
If I create a second cabal file which separates these two different 
packages, would that fix it?


I don't think so. If you already have your application split in 
library part + executable part, then everything should be fine (as 
long as the library is installed before running your application).


The issue is, the (dynamic) interpreter part of my code is part of 
the main loop of the program, and is (as far as I can see) 
inseparable from the rest of the code.


What you need to separate is the code you are planning to interpret in 
runtime. For example, say you have:


src/HackMail/Main.hs
src/HackMail/Data/Types.hs
src/SomePlugin.hs

and SomePlugin.hs is loaded by the interpreter, then you may want to 
reorganize your files like

this:

src/HackMail/Main.hs
src/HackMail/Data/Types.hs
plugins/SomePlugin.hs

and set the source path to plugins directory (using something like 
unsafeSetGhcOption -i./plugins, or set [searchPath := 
[./plugins]], if using the darcs version).


Daniel

I'll give the cabal thing a try, given the incredible triviality of 
doing everything with cabal, I should be done testing the solution 
before I hit the send button... Cabal guys, you rock.


Thanks again, Dan.

/Joe

Daniel Gorín wrote:

Hi

Just a wild guess but maybe the interpreter is recompiling (in 
runtime) code that has already been compiled to build your 
application (in compile-time). This may lead to inconsistencies 
since a type such as HackMail.Data.Main.Types.Filter may refer to 
two different (and incompatible) types.


To see if this is the case, make sure your dynamic code is not 
located together with your base code (i.e., move it to another 
directory, and set the src file directory for the interpreter 
accordingly). Now you may get another runtime error, something along 
the lines of Module not found: HackMail.Data.MainTypes. This 
basically means that you need to make your (already compiled) types 
available to the interpreter. I think the simplest way is to put all 
your support types in a package, register it with ghc, link your 
application to it, and ask the interpreter to use this package (with 
a -package  flag).


Hope this helps!

Daniel

On Mar 17, 2009, at 11:52 PM, Joe Fredette wrote:


List,

I've got this project, source on patch-tag here[1]

It's a nice little project, I've got the whole thing roughly 
working, it compiles okay, everything seems to work, until I try to 
run it, specifically when I run it in ghci, or when I run the main 
executable (which uses hint), and look at any type involving my 
Email type, it gives me the following error:


Type syonym HackMail.Data.MainTypes.Filter:
  Can't find interface-file declaration for type constructor or 
class HackMail.Data.ParseEmail.Email

Probable cause: bug in .hi-boot file, or inconsistent .hi file
Use -ddump-if-trace to get an idea of which file caused the error

As far as I understand, it wants to find the interface-file 
declaration for a specific type (Email) exported by the ParseEmail 
module, all of the exports (I think) are in order. I've tried 
mucking around with it a bit, but I don't fully understand what the 
error even means, much less how to fix it.


Other relevant info, Email is exported in a roundabout way, namely 
by importing a module MainTypes, which exports a module Email, 
which exports a the ParseEmail Module, which exports the datatype 
Email.


The Filter delcaration it _actually_ complains about (it's just 
the first place the email type is invoked) is:


type Filter a = ReaderT (Config, Email) IO a

nothing particularly special.

Any help fixing this is greatly appreciated, I did find this bug 
report[2] which seems like it might be relevant.


But trying to unregister - cabal clean - cabal install doesn't 
fix it. I've also tried manually removing the dist/ folder, and 
also unregistering the package.


Thanks again.

/Joe

[1] http://patch-tag.com/repo/Hackmail/browse
[2] http://hackage.haskell.org/trac/ghc/ticket/2057
jfredett.vcf___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe




jfredett.vcf



begin:vcard

Re: [Haskell-cafe] can GHC build an executable from a C source file?

2009-03-17 Thread Joe Fredette
You know, I hear theres this brilliant program for compiling C code -- 
gcd? ccg? gcc, yah gcc... Anyone tried it?


In all seriousness though, why do you need to compile c with ghc? I'm 
curious, it seems a bit pointless...



/Joe

Manlio Perillo wrote:

Anton Tayanovskyy ha scritto:

Works for me without the --make, as `ghc foo.c`



For me, too, thanks.



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

begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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


[Haskell-cafe] .hi inconsistency bug.

2009-03-17 Thread Joe Fredette

List,

I've got this project, source on patch-tag here[1]

It's a nice little project, I've got the whole thing roughly working, it 
compiles okay, everything seems to work, until I try to run it, 
specifically when I run it in ghci, or when I run the main executable 
(which uses hint), and look at any type involving my Email type, it 
gives me the following error:


   Type syonym HackMail.Data.MainTypes.Filter:
 Can't find interface-file declaration for type constructor or 
class HackMail.Data.ParseEmail.Email

   Probable cause: bug in .hi-boot file, or inconsistent .hi file
   Use -ddump-if-trace to get an idea of which file caused the error

As far as I understand, it wants to find the interface-file declaration 
for a specific type (Email) exported by the ParseEmail module, all of 
the exports (I think) are in order. I've tried mucking around with it a 
bit, but I don't fully understand what the error even means, much less 
how to fix it.


Other relevant info, Email is exported in a roundabout way, namely by 
importing a module MainTypes, which exports a module Email, which 
exports a the ParseEmail Module, which exports the datatype Email.


The Filter delcaration it _actually_ complains about (it's just the 
first place the email type is invoked) is:


   type Filter a = ReaderT (Config, Email) IO a

nothing particularly special.

Any help fixing this is greatly appreciated, I did find this bug 
report[2] which seems like it might be relevant.


But trying to unregister - cabal clean - cabal install doesn't fix it. 
I've also tried manually removing the dist/ folder, and also 
unregistering the package.


Thanks again.

/Joe

[1] http://patch-tag.com/repo/Hackmail/browse
[2] http://hackage.haskell.org/trac/ghc/ticket/2057
begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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


Re: [Haskell-cafe] .hi inconsistency bug.

2009-03-17 Thread Joe Fredette
So, if I understand correctly, the interpreter is compiling MainTypes 
twice?


Could this be a result of having two outputs (one executable and one 
library) in my .cabal file? it _does_ compile those things twice... If I 
create a second cabal file which separates these two different packages, 
would that fix it?


The issue is, the (dynamic) interpreter part of my code is part of the 
main loop of the program, and is (as far as I can see) inseparable from 
the rest of the code.


I'll give the cabal thing a try, given the incredible triviality of 
doing everything with cabal, I should be done testing the solution 
before I hit the send button... Cabal guys, you rock.


Thanks again, Dan.

/Joe

Daniel Gorín wrote:

Hi

Just a wild guess but maybe the interpreter is recompiling (in 
runtime) code that has already been compiled to build your application 
(in compile-time). This may lead to inconsistencies since a type such 
as HackMail.Data.Main.Types.Filter may refer to two different (and 
incompatible) types.


To see if this is the case, make sure your dynamic code is not 
located together with your base code (i.e., move it to another 
directory, and set the src file directory for the interpreter 
accordingly). Now you may get another runtime error, something along 
the lines of Module not found: HackMail.Data.MainTypes. This 
basically means that you need to make your (already compiled) types 
available to the interpreter. I think the simplest way is to put all 
your support types in a package, register it with ghc, link your 
application to it, and ask the interpreter to use this package (with a 
-package  flag).


Hope this helps!

Daniel

On Mar 17, 2009, at 11:52 PM, Joe Fredette wrote:


List,

I've got this project, source on patch-tag here[1]

It's a nice little project, I've got the whole thing roughly working, 
it compiles okay, everything seems to work, until I try to run it, 
specifically when I run it in ghci, or when I run the main executable 
(which uses hint), and look at any type involving my Email type, it 
gives me the following error:


 Type syonym HackMail.Data.MainTypes.Filter:
   Can't find interface-file declaration for type constructor or 
class HackMail.Data.ParseEmail.Email

 Probable cause: bug in .hi-boot file, or inconsistent .hi file
 Use -ddump-if-trace to get an idea of which file caused the error

As far as I understand, it wants to find the interface-file 
declaration for a specific type (Email) exported by the ParseEmail 
module, all of the exports (I think) are in order. I've tried mucking 
around with it a bit, but I don't fully understand what the error 
even means, much less how to fix it.


Other relevant info, Email is exported in a roundabout way, namely by 
importing a module MainTypes, which exports a module Email, which 
exports a the ParseEmail Module, which exports the datatype Email.


The Filter delcaration it _actually_ complains about (it's just the 
first place the email type is invoked) is:


 type Filter a = ReaderT (Config, Email) IO a

nothing particularly special.

Any help fixing this is greatly appreciated, I did find this bug 
report[2] which seems like it might be relevant.


But trying to unregister - cabal clean - cabal install doesn't fix 
it. I've also tried manually removing the dist/ folder, and also 
unregistering the package.


Thanks again.

/Joe

[1] http://patch-tag.com/repo/Hackmail/browse
[2] http://hackage.haskell.org/trac/ghc/ticket/2057
jfredett.vcf___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe



begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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


Re: [Haskell-cafe] I can't install hs-plugins beceause of Linker.h

2009-03-15 Thread Joe Fredette
I believe that hs-plugins has fallen out of use, on #haskell, I was 
directed to hint[1]. IIRC, I had to disable some packages because of 
cross installation.



/Joe




[1] http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hint

Yuri Kashnikoff wrote:

Hi!

I was trying to install hs-plugins both from sources $./Setup.lhs
... and with $cabal fetchcabal install and both failed.
It always reports that Linker.h is missing. I have tried to use
--extra-include-dirs with path to ghc-6.10.1 dir and
ghc-6.10.1/include dir. Nothing changed.

Here is a report from Setup.lhs:

Setup.lhs:2:2:
Warning: In the use of `defaultUserHooks'
 (imported from Distribution.Simple):
 Deprecated: Use simpleUserHooks or autoconfUserHooks,
unless you need Cabal-1.2
 compatibility in which case you must stick with defaultUserHooks
Warning: defaultUserHooks in Setup script is deprecated.
Configuring plugins-1.4.0...
Warning: This package indirectly depends on multiple versions of the same
package. This is highly likely to cause a compile failure.
package ghc-6.10.1 requires Cabal-1.6.0.1
package plugins-1.4.0 requires Cabal-1.6.0.2
checking build system type... i386-apple-darwin9.6.0
checking for ghc... ghc
checking for value of __GLASGOW_HASKELL__... 610
checking for ghc library directory... /opt/local/lib/ghc-6.10.1/.
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for arc4random... yes
checking for a BSD-compatible install... /usr/bin/install -c
configure: creating ./config.status
config.status: creating config.mk
config.status: creating testsuite/makewith/io/TestIO.conf
config.status: creating testsuite/makewith/unsafeio/Unsafe.conf
config.status: creating config.h
config.status: config.h is unchanged
Setup.lhs: Missing dependency on a foreign library:
* Missing header file: Linker.h
This problem can usually be solved by installing the system package that
provides this library (you may need the -dev version). If the library is
already installed but in a non-standard location then you can use the flags
--extra-include-dirs= and --extra-lib-dirs= to specify where it is.




  
begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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


Re: [Haskell-cafe] Re: Haskell-Wiki Account registration

2009-03-12 Thread Joe Fredette
As long as one is implementing a CAPTCHA, the reCAPTCHA [1] is my 
humble suggestion, I have no idea how the haskellwiki is implemented or 
how easy this is to implement, but I imagine it couldn't be _that_ hard.


/Joe

[1] http://recaptcha.net/

Benjamin L.Russell wrote:

On Thu, 12 Mar 2009 17:31:49 +0100 (CET), Henning Thielemann
lemm...@henning-thielemann.de wrote:

  
How long will the Wiki account registration be disabled? Would it be 
possible to ask a question, that real Haskellers could easily answer, but 
a spambot cannot? E.g. What's Haskell's surname?



Indeed.  Disabling Wiki account registration indefinitely, and not
replacing it by at least some form of automatic registration, risks
allowing outsiders to think that the HaskellWiki is somehow run by
some clique, which I'm sure is not the case.  Automating the process
removes most of the risk of this misimpression.

Why not ask new users to identify letters in a random bitmapped image
of a string, as is commonly done?  Then any new user who still
registers and starts submitting spam can be tracked and moderated.

-- Benjamin L. Russell
  
begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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


Re: [Haskell-cafe] ANNOUNCE: Vintage BASIC 1.0

2009-03-12 Thread Joe Fredette

Well, there goes any productivity I might have had on my spring break...

Hurrah for old BASIC games!

Lyle Kopnicky wrote:
I am pleased to announce the initial release of Vintage BASIC, an 
interpreter for microcomputer-era BASIC. Fully unit-tested, it 
faithfully implements the common elements of the language. On the web 
site, you can find 102 games from the classic book BASIC Computer 
Games, all of which run flawlessly. Have fun!


This is a standalone interpreter, operating on text files. Although 
not an embedding, like Lennart Augustsson's clever implementation, it 
does use a custom BASIC monad in order to execute the code. A unique 
feature of this implementation is that control structures such as FOR 
are implemented using resumable exceptions: FOR is a handler and NEXT 
throws an exception. A Developer's Guide is included with the source.


This is my first public release of open source software. I have been 
working on this project since 2003.


Home page: http://www.vintage-basic.net

Also available on Hackage 
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/vintage-basic 
and patch-tag.com http://patch-tag.com/repo/vintage-basic/home.


Please e-mail me at l...@vintage-basic.net 
mailto:l...@vintage-basic.net with any questions/comments.


- Lyle


___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
  
begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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


Re: [Haskell-cafe] Sugestion for a Haskell mascot

2009-03-09 Thread Joe Fredette
Hehe, I love it. Sloth is a synonym for Lazyness in English too, and 
they're so freaking cute... :)


Maurí­cio wrote:

Hi,

Here in Brazil we have a forest animal we name 'preguiça' -- literally,
lazyness. What better mascot we could have for Haskell? It lives (and
sleeps) in trees, and if you see the main picture in wikipedia articles
you can easily imagine the tree branch beeing replaced by a lambda:

http://en.wikipedia.org/wiki/Sloth

http://pt.wikipedia.org/wiki/Bicho-pregui%C3%A7a

Best,
Maurício

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

begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

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