Re: 1.3 PreludeList _____By functions' restricted type

1995-12-21 Thread Philip Wadler
Alistair, I agree with Mike Gunter on this one. -- P Mike Gunter writes: The By functions in the 1.3 PreludeList (elemBy, deleteBy, etc.) all take ``equality'' predicates with type a - a - Bool. Most of these functions (with no change in definition that I see in a quick

Re: Haskell2Java

1997-01-06 Thread Philip Wadler
at compiling a functional language into Java, but found it was difficult to do efficiently. -- P --- Philip Wadler [EMAIL PROTECTED] Bell Laboratories http://cm.bell-labs.com/cm/cs/who/wadler/ Lucent

Re: global type inference

1997-02-25 Thread Philip Wadler
I think the report has it about right. * A conforming implementation of Haskell 1.4 must support mutually recursive modules. That is, a collection of individually legal mutually recursive modules is a legal Haskell program. * The Report recognises that implementations available in

Re: global type inference

1997-02-25 Thread Philip Wadler
This isn't muddling implemenation with language design. The language design says mutual recursion is OK. A particular implementation supporting separate compilation will typically require a variety of "help", such as a Makefile with accurate dependencies. Requiring type signatures, or

Quantification in Constructors

1997-03-14 Thread Philip Wadler
Lennart writes: I would have prefered to keep free type variables existentially in data declarations. But I could find no nice way to have both universal and existential type variables so I let Mark Jones persuade me into this syntax. Existential tyvars are written with a ?, e.g.

Re: Haskell 1.3

1996-03-08 Thread Philip Wadler
It looks ugly, but we could say that a data declaration does not have to have any constructors: data Empty = -- Lennart I agree that the best way to fix this is to have a form of data declaration with no constructors, but I'm not keen on the syntax you propose. How about if

Haskell 1.3

1996-03-07 Thread Philip Wadler
) patterns. Yours, -- P --- Professor Philip Wadler[EMAIL PROTECTED] Department of Computing Sciencehttp://www.dcs.glasgow.ac.uk/~wadler University of Glasgow office: +44

Re: Literate comments

1992-02-06 Thread Philip Wadler
RFC-822-HEADERS: Original-Via: == We seem to be converging here. I prefer Simon's suggestion of an appendix to Paul's suggestion of a Section 1.6, but am not too bothered either way. Will also try to work in Simon's note about file extensions. I am happy to leave the question

Literate comments

1992-02-05 Thread Philip Wadler
Despite Paul having ruled on the matter, the debate still rages, with about half saying that is wonderful, and half saying it is awful. Under these circumstances, Paul's ruling seems right: it is pointless to legislate as part of the language. On the other hand, the current circumstance is

exit in PreludeIO

1992-02-23 Thread Philip Wadler
The function "exit" in PreludeIO would suit its purpose better if: (a) It wrote to "stderr" rather than "stdout", (b) It followed the error message with a newline. Easy and quick to change! What do people think? (Especially Paul and Joe.) -- P

Re: The Great Integer Division Controversy

1992-02-24 Thread Philip Wadler
I gather the change you propose makes `div` consistent with SML and Miranda, and uses `quo` for what Scheme calls `quotient`. Sounds good to me. -- P

functional language implementations

1992-02-18 Thread Philip Wadler
Here is my current list of Haskell implementations. If anyone has corrections or additions, please send them to me. Cheers, -- P HASKELL, Sun-3 and Sun-4 Glasgow Haskell by Cordy Hall, Kevin Hammond, Will Partain, Simon Peyton Jones, Phil Wadler compiler, implemented in Haskell, runs

Re: Array Indexing

1992-03-02 Thread Philip Wadler
! It is the responsibility of the programmer to enforce bounds ! checking when required in non-derived instances of class @Ix@. ! An implementation is not required to check that an index ! lies within the bounds of an array when accessing that array. The above is fine by me, but here is a more

Re: Expressiveness of functional language I/O

1992-03-19 Thread Philip Wadler
Evan writes: | Consider a polymorphic continuation request such as the following: | | someRequest :: T a - (U a - Dialogue) and then shows this does not work in the stream model, unless one has existential types. Quite true, but note that there are *no* polymorphic IO functions! At least,

Re: Multiple parameters to classes

1992-04-16 Thread Philip Wadler
| I am part of a group working on a new language for Microwave hardware | design (MHDL). As it turns out, we are incorporating almost all of | Haskell 1.2 into it. If there is anything written about this language, please send a pointer to this mailing list; and please keep us appraised of your

Re: pattern guards and guarded patterns

1997-04-30 Thread Philip Wadler
Tommy Thorn writes: My only worry is that Haskell (if not already) is turning into the C++ of functional languages, ie. feature upon feature. Haskell is already quite a mouthfull to learn. This worries me too. Not least is the problem that - is not a particularly natural syntax for this

Journal of Functional Programming

1997-05-02 Thread Philip Wadler
subscribe. -- Philip Wadler, Editor-in-Chief, JFP JFP 6.4 July 1996 = Representing demand by partial projections John Launchbury and Gebreselassie Baraki New dimensions in heap profiling Colin Runciman and Nicklas Rojemo Benchmarking implementations of functional languages

Re: A new view of guards

1997-05-02 Thread Philip Wadler
I think Heribert Schuetz makes a good argument that Simon's proposed notation would work better if adapted to the Maybe monad. Simon's original proposal struck me as something of a hack, whereas Schuetz's variant seems more disciplined. -- P

Re: Laws for Monads with zero and plus

1997-05-14 Thread Philip Wadler
For sets and bags we have zero = k = zero m = \x - zero= zero (m ++ n) = k = m = k ++ n = k m = \x - k x ++ h x = m = k ++ n = k. But the fourth law does not hold for lists, and the second law does not hold if we consider the

Re: Monads, Functors and typeclasses

1997-05-14 Thread Philip Wadler
Maybe we should do it as follows: At the moment you make an instance of a class that has default definitions for one of its superclasses, and there is no corresponding instance for that class, we implicitly insert the specified default instance. If there are more instances to choose from

Re: pattern guards + monads

1997-05-15 Thread Philip Wadler
Now, for monads, Phil Wadler writes a law: m = \x - k x ++ h x = m = k ++ n = k in which 'h' appears on the lhs but not the rhs, and 'n' on the rhs but not the lhs. ... perhaps the equation should read as follows? m = \x - k x ++ h x = m = k ++ m = h Yes, of course it

GC (was: Stumped without mutation... )

1997-08-12 Thread Philip Wadler
I think that Java might be slow, just because of this automatic garbage collection. I can't let this chestnut go unchallenged. Let's not bandy about claims without evidence. GC is perfectly fine for building into phone switches (via Erlang) so it can't be all that slow. -- P

Re: Evaluating Haskell

1997-08-27 Thread Philip Wadler
http://www.math.luc.edu/pizza/ Loyola University, Chicago ftp://ftp.eecs.tulane.edu/pub/maraist/pizza/welcome.html Tulane University, New Orleans http://wwwipd.ira.uka.de/~pizza University of Karlsruhe Philip Wadler

Re: Evaluating Haskell

1997-08-27 Thread Philip Wadler
http://www.math.luc.edu/pizza/ Loyola University, Chicago ftp://ftp.eecs.tulane.edu/pub/maraist/pizza/welcome.html Tulane University, New Orleans http://wwwipd.ira.uka.de/~pizza University of Karlsruhe Philip Wadler

Re: Monads and Linear Logic

1997-09-03 Thread Philip Wadler
home page. -- P --- Philip Wadler [EMAIL PROTECTED] Bell Laboratories http://cm.bell-labs.com/cm/cs/who/wadler/ Lucent Technologies office: +1 908 582 4004 600

Re: Damas-Milner, Hindley-Milner, ...

1997-10-15 Thread Philip Wadler
Briefly, what is the difference between Damas-Milner and Hindley-Milner typing? None. They are different names for the same thing. The actual algorithm was discovered a number of times. Hindley wrote a history of it, which I don't have to hand. He notes that it had already been

Dave MacQueen: POPL call for participation

1997-11-19 Thread Philip Wadler
Phil, Could you send the following POPL 98 Call for Participation message to the Haskell mailing list for me? Thanks, Dave --- ACM PRINCIPLES OF PROGRAMMING LANGUAGES (POPL '98)

Re: Design Methodologies

1998-02-02 Thread Philip Wadler
urs, -- P ------- Philip Wadler [EMAIL PROTECTED] Bell Laboratories http://www.cs.bell-labs.com/~wadler Lucent Technologies office: +1 908 582 4004 600 Mountain Ave, room 2T-402 fax: +1 908 582 5857 Murray Hill, NJ

Re: Wadler's prettier printer

1998-05-14 Thread Philip Wadler
on my code. Thanks! -- P --- Philip Wadler [EMAIL PROTECTED] Bell Labs, Lucent Technologies http://www.cs.bell-labs.com/~wadler 600 Mountain Ave, room 2T-402 office: +1 908 582 4004

Re: Teaching Haskell

1998-06-24 Thread Philip Wadler
d editions of `Intro to FP'? Richard has revised Bird and Wadler, which is now just Bird. It includes type classes and monads, and should be in your bookstore round about now. -- P ------- Philip Wadler

Re: type errors

1998-06-30 Thread Philip Wadler
You're right. The restriction is excessive. Thanks for pointing this out. Probably we should only require that at least one of the class variables is constrained. Why even require this? (All x) = x - x uses the class `All' which restricts its argument not one whit. -- P

Re: Felleisen on Standard Haskell

1998-08-04 Thread Philip Wadler
That's just what I intend to do. I don't see Std Haskell as a big deal, but even little deals are worth completing rather than leaving as loose ends... and I'm more optimistic than Paul about the usefulness of Std Haskell. I would be happy to find a name that was less grand and

Re: Int vs Integer

1998-09-15 Thread Philip Wadler
Simon PJ writes: I think we should - generalise length, splitAt, drop, take, replicate - generalise toEnum, fromEnum - leave (!!) alone (arrays must fit in an address space) I don't know what to do about RealFloat. Sigh If the goal is to make life easy for beginners (and

Re: Int vs Integer

1998-10-06 Thread Philip Wadler
Simon proposes not to change the prelude to support Integer, giving this argument: The more this topic gets discussed the more I that it's like other Prelude things: you pull on one thing and the plate of spaghetti ends up in your lap. I'm confused. I thought at the ICFP Haskell meeting

Int vs. Integer

1998-10-07 Thread Philip Wadler
Hi Simon, This really seems to have touched off a firestorm! I think the meta-argument made by Simon T (and by you) is sensible, so I don't object to maintaining the status quo. But you implied that changing the libraries led to `a ball of spaghetti', and I don't see that, can you please

Re: Haskell 98

1998-10-26 Thread Philip Wadler
Consider the function t :: T a = T a - T a I think that it's far from clear what each of the T's mean! Worse, in Haskell 2 we'll also have t :: T T = T a - T a In (T T) one is class and the other is a type constructor. Let's leave the language as it is: class names and

Re: Functional DSP

1998-10-24 Thread Philip Wadler
I was planning to try similar things you have mentioned on your page, such as interfacing to "the fastest FFT in the West" (FFTW) via GreenCard, ... By the way, FFTW although written in C, was generated by a functional program written in Caml. You can find more details

Re: MonadZero

1998-11-03 Thread Philip Wadler
Simon says, Here are the two proposals I suggested in http://research.microsoft.com/Users/simonpj 1.Fix up the current version. use MonadZero for do expressions with *irrefutable* patterns (instead of *unfailable* patterns as now) 2.Nuke MonadZero altogether.

Re: MonadZero

1998-11-03 Thread Philip Wadler
Simon says, Sorry, I don't understand option 2, can you please explain? * Eliminate MonadZero * Add 'mfail :: m a' to Monad, with a suitable default decl * Every do expression has a type in Monad I must be dense this morning, as I'm still in the dark. What is the

Re: MonadZero

1998-11-03 Thread Philip Wadler
Thanks for the further explanation. On reflection there probably shouldn't be a default declaration for mzero. Any compiler for Haskell must do *something* if a method is called for which there is neither an explicit declaration in the instance, nor a default method. ... Leaving out

Re: Haskell 98 progress

1998-11-04 Thread Philip Wadler
- The simple-context restriction. My difficulty here is that there is just no good place to stop. The 'type variable in head position' option is attractive, but it's unimplemented, untested, and it's neither the status quo nor a final destination. On the other hand, we

Re: MonadZero (concluded?)

1998-11-04 Thread Philip Wadler
There is no need to have both `mzero' and `mfail' in every monad. Just have `mfail'. Leave `zero' and `plus' to MonadPlus. This should make Eric partially happy. It also means one can simply write instance Monad [] where ...return, =, as before... mfail s = []

mfail - fail

1998-11-05 Thread Philip Wadler
Here's an even better idea: replace mfail with fail. It is, after all, the fail of the IO monad! Option 4'': Monad ((=), return, fail) -- P

Re: mfail - fail

1998-11-05 Thread Philip Wadler
Ralph writes, Unfortunately not, fail of IO fame has type IOError - IO a and not String - m a as Monad's new member. Here's my suggestion: o Monad ((=), return, fail) o throw (thanks Frank) instead of fail for the IO operation o raise for Haskell-2's

Re: Default Default

1998-11-05 Thread Philip Wadler
John Peterson writes Int is really not a nice datatype and we shouldn't be allowing it to crop up unexpectedly. Yes, but if we believed that, we should use Integer, not Int, for length. You are right, beginners may stub their toe on factorial. On the other hand, with the default set to

Re: MonadZero (concluded)

1998-11-06 Thread Philip Wadler
class Monad m where return :: m a (=) :: m a - (a - m b) - m b () :: m a - m b - m b fail :: String - m a fail s = error s IO.fail becomes IO.ioError Looks good. class Monad m = MonadPlus m where mzero :: m

Re: Default Default

1998-11-09 Thread Philip Wadler
Colin writes: Another aspect of your comment that troubles me is the strong implication that if the default were Integer, things would not be `done right'. Presumably you mean that it would be painful to make use of a Prelude with Int-based standard functions? If so, then the current

PADL'99, Call for Participation

1998-12-02 Thread Philip Wadler
[Apologies for any duplicates. -- P] CALL FOR PARTICIPATION First International Workshop on Practical Aspects of Declarative Languages (PADL'99) Menger

Re: Market Penetration of FP and Haskell

1999-03-02 Thread Philip Wadler
sl XSL W3C home page: http://www.w3.org/Style/XSL/ ------- Philip Wadler [EMAIL PROTECTED] Bell Labs, Lucent Technologies http://www.cs.bell-labs.com/~wadler 600 Mountain Ave, room 2T-402

Re: Market Penetration of FP and Haskell

1999-03-04 Thread Philip Wadler
"S. Alexander Jacobson" [EMAIL PROTECTED] writes: So, if they are making sure that all platforms have a scheme interpreter, why not make the spec language agnostic. i.e. allow the user to use any language that can be compiled/translated into scheme (by code written in scheme?). Your

Re: Contexts on data type declarations

1999-05-17 Thread Philip Wadler
Simon PJ writes: ** I therefore PROPOSE that when pattern matching on a constructor, ** any context on the data type declaration is ignored. Yell if you dislike this; otherwise I'll just add it to the 'bugs' page. Bleah! (Is that a loud enough yell?) I'm happy with either of the

Re: Contexts on data type declarations

1999-05-17 Thread Philip Wadler
So doesn't my proposal give you precisely what you want, and no more? Because my interest is as much in documentation as in constraints on how the program executes (I admit your method achieves the latter). If I write, say, data Eq a = Assoc a b then I'd like the signatures to ensure that

(n+k)

1992-02-12 Thread Philip Wadler
(n+k) patterns are still causing difficulties in the syntax. I would be happy with the following: On a lhs, only allow (n+k) patterns in arguments. Thus n+1 = ... is ALWAYS a definition of (+), but f (n+1) = case m of {n+1 - ...} are still allowed.

Re: drop take [was: fixing typos in Haskell-98]

2000-01-25 Thread Philip Wadler
I'm with Jon Fairbairn on this. Negative arguments are an error because the domain of take and drop is the naturals. The problem is that we use Int to represent naturals. -- P For the people that share this sentiment, can you please explain why ints that are too big should not similarly

Re: drop take [was: fixing typos in Haskell-98]

2000-01-25 Thread Philip Wadler
Chris, I admit your argument about symmetry is attractive. If you could put forward a concrete application, on a par with the `break into blocks' application given earlier, you would likely sway me. -- P

ICFP 2000: new submission deadline

2000-02-27 Thread Philip Wadler
In order to maintain the same deadline as our sister conference PPDP, we are postponing our submission deadline by two weeks. Our apologies for the change. ICFP 2000: International Conference on Functional Programming

ICFP 2000

2000-02-22 Thread Philip Wadler
to sign ACM copyright release forms. Program Committee ~ Program Chair Program Committee ~~ ~~ Philip Wadler Richard Bird, Oxford Bell Labs, Lucent Technologies

Re: HaskellDoc?

2000-03-17 Thread Philip Wadler
Volker suggests using SGML/DSSSL for documentation. If one were to take this route, I think XML/XSLT would be a more sensible combination. See http://www.cs.bell-labs.com/~wadler/xml for a quick intro to XML. Runciman and Wallace at York have a nice XML library for Haskell.

[Haskell] elementary tracing for Haskell

2004-10-11 Thread Philip Wadler
. ... family.phelpsinc.com/branches/haskell/ - 28k - Cached - Similar pages Philip Wadler, Professor of Theoretical Computer Science School of Informatics, University of Edinburgh JCMB, Mayfield Road, Edinburgh EH9 3JZ SCOTLAND +44 131 650 5174 http://homepages.inf.ed.ac.uk/wadler

[Haskell] University of Edinburgh Chancellor's Fellowships

2018-02-13 Thread Philip Wadler
are strongly encouraged to apply. The deadline is March 12th, please see: https://www.ed.ac.uk/informatics/about/work-with-us/vacancies/chancellor-fellowship-digital-technologies for further information. Feel free to contact me if you have questions. Yours, -- P . \ Philip Wadler, Professor

Fwd: Two Proposals

2011-10-12 Thread Philip Wadler
George, Thanks very much for this. I like your suggestion, which fits the logical structure perfectly; and you've suggested a neat way around the ugliness of 'group groupBy'. I also note that if we aren't so worried about not introducing new keywords, that 'then group' could become 'group'.

Re: Two Proposals

2011-10-19 Thread Philip Wadler
to live with the problem. Any ideas? I don’t think we can steal “group” as a keyword -- it’s a function exported by Data.List, and I don’t think the benefit justifies the cost. So you are saying you prefer then group to group? Yours, -- P -- .\ Philip Wadler, Professor of Theoretical

Re: Making argv a constant (stdin, etc.)

1997-01-24 Thread Philip Wadler/bin/ksh
Sigbjorn wrote: I'd actually prefer if stdinstdout were not constants, but argv was ;) Having operators just like getArgs for the standard handles getStdin :: IO Handle getStdout :: IO Handle getStderr :: IO Handle would not prevent an implementation from providing useful