Re: Cryptarithm solver - Haskell vs. C++

1999-09-22 Thread Will Partain

[EMAIL PROTECTED] (Marcin 'Qrczak' Kowalczyk) writes:

 I have to care how fast my programs run. I like writing in Haskell
 very much, it's my favorite general-purpose language, but one of the
 biggest weak points of Haskell for me is poor efficiency (at least
 with ghc, I don't know how fast are other compilers). I wonder whether
 this is the issue of Haskell itself or the compilers, I wonder if I
 can expect things to go better in future.

I don't know what the future holds but, at least with GHC,
you already have a range of options, to try to go faster.

* You can profile your code and write better "standard"
  Haskell;

* You can drop down to non-standard Haskell, and express
  your code with (e.g.) unboxed values, bytePrimArray#s, --
  i.e. direct access to the machinery that GHC's libraries
  use;

* You can code selected hot spots in C/whatever, and call
  out from Haskell to do those; if you do enough of this,
  you end up with the non-Haskell program you would've had
  to write anyway :-)

* You can give your code to the GHC people for benchmarking
  purposes; be sure to mention, "By the way, this code runs
  N times faster when compiled by HBC" -- it works wonders.

I think it is Very Cool that users have it within their
power to claw back arbitrary "performance loss", if they
want/need to.

Will





Re: Question

1999-08-20 Thread Will Partain

I don't think the development tools are the real problem;
it's the size of the pile of readily-available Haskell
modules (and {libraries,sets} of modules) that do useful
things.

Nowadays, when setting out to tackle a programming problem
(in any language), you kinda hope that big chunks of the
code has already been written for you (as modules/libraries
of some sort).  The typical application is pretty high up
the food chain.  With Haskell, it's typically, "I'd love to
write this program in Haskell, but I'd first need 6 months
to write the needed infrastructure..."

The great thing about "the modules problem" is that nearly
anyone can contribute -- you don't have to know the innards
of any Haskell implementation in order to be useful.

Yes, I've said this all before... :-)

Will

"Mark P Jones" [EMAIL PROTECTED] writes:

 One of the greatest disappointments to date of the move
 to more liberal (i.e. free software) licenses for systems
 like Hugs and GHC, is that it has done almost nothing to
 stimulate contributions to the implementations themselves
 from outside the immediate (and small) group of developers
 concerned.  ...





Re: Question

1999-08-20 Thread Will Partain

Marko Schuetz [EMAIL PROTECTED] writes:

 ... It has taken the Haskell community quite some time to
 switch to liberal licenses. IIRC only Hugs used to come
 with a license at all, neither hbc, ghc nor nhc used to
 have one for quite some time.

GHC has always had a "liberal license", it just wasn't
written down :-) There has never been a whisper of any other
terms than "it's freely available, and we'd be delighted if
you used it".

I think we mostly just followed Lennart Augustsson's example
with LML/HBC -- after all, we stole lots of other good ideas
from those guys, why not their "licensing" :-?

The need is "more libraries", not "groovier licenses".

Will
(ex-GHC person)





code for XML things? sysadmin things?

1998-09-18 Thread Will Partain

Hi, folks.  I'm noodling around on some (Unix) sysadmin
ideas, and would like to use Haskell and XML
(http://www.xml.com).  Does anyone have code to share that
might be *vaguely* useful for XML-ish things? -- I'm mainly
interested in it as a data-exchange format.  Or for any
sysadmin-ish purpose whatsoever?

As always in these things, *don't* wait until "I can tidy it
up a bit", or "this version isn't too good, wait for the
next one".  As Joe Armstrong used to say, "Freeze and sell!"
Your "customers" will tell you if it's any good, soon
enough.  (Haskell really needs more code of all kinds in
circulation; the Perl module people, for example, produce
more in a week than we do in a year.)

Should anything come of my noodling, it will be freely
available in the usual way.  Thanks,

Will





Re: Gif writer module

1998-09-18 Thread Will Partain

"Keith S. Wansbrough" [EMAIL PROTECTED] writes:

 ... Having a single unified repository for Haskell modules would
 be a wonderful thing.  Does anyone else agree?

Yes, lots of people agree, most importantly Sigbjorn :-)

We (Glaswegians) tried to do a "Haskell library" in the
early days, but not much came of it except for Stephen
Bevan's numerical code.  But that's no reason not to swing
'round and try again; after all, there should be *much* more
Haskell code in existence than in 1991.

Will





Re: Int vs Integer

1998-09-10 Thread Will Partain

[EMAIL PROTECTED] writes:

  As far as I know, none of the existing implementations
 takes the speed of Integer seriously (ghc certainly doesn't), ...

The GHC implementation has always been a thin wrapper on top
of the GMP (GNU multi-precision arithmetic) library.  So,
while we may not have taken Integer performance too
seriously, we made a point of hanging around with people who
did.  (Hey, Lennart made much the same choice, and he's not
one to give away speed for nothing :-)

Will (ex-GHC person)





[ANNOUNCE] GHC 0.28 snapshot for Linux ELF (Haskell 1.2)

1996-05-21 Thread Will Partain

A from-working-sources no-guarantees snapshot of the Glasgow Haskell
compiler (GHC) for the i386-unknown-linux platform is now available
from ftp://ftp.dcs.glasgow.ac.uk/pub/haskell/glasgow/ghc-0.28-platform.tar.gz.
(The files ghc-0.26-docs-and-examples.tar.gz and
ghc-0.26-ps-docs.tar.gz [PostScript] may also be of interest.)

This is still the "old" GHC for Haskell 1.2.  The 0.28 pseudo-release
is solely to provide a GHC system for Linux ELF machines.  We
_believe_ that profiling and Concurrent Haskell work, as well as
ordinary sequential execution.

As 0.28 is a snapshot and not a "proper" release, it may have serious,
show-stopping bugs in it.  Our commonly-reported-bugs Web page,
http://www.dcs.gla.ac.uk/fp/software/ghc/ghc-bugs.html, might be
one place to look...

GCC 2.7.x is required; GCC 2.6.x will *not* work.

A file ghc-0.28-src.tar.gz includes what should be buildable source;
haven't actually tried it...

A particular thanks to Peter Breuer [EMAIL PROTECTED], who ELFified our
Linux machine for us.

Please report any bugs to [EMAIL PROTECTED]

Will Partain
AQUA project (slave)

Dated: 96/05/21

=== INSTALLATION NOTES ==

Ignore the installation instructions in any documentation.  This is
the stuff that applies for this distribution.

Unpack the distribution.

Move "ghc-0.28-platform" to wherever you like.

Make a link to ghc-0.28-platform/ghc/driver/ghc, so that "ghc" will
be in your PATH.

Change the hardwired paths in ghc/driver/ghc and in
ghc/utils/hscpp/hscpp to point to where things are on your system.
(Also: ghc/utils/mkdependHS/mkdependHS, if you want to use it.)
Notably: where "perl" is (first line of each script), where $TopPwd is
(ghc script), where your gcc cpp ($OrigCpp) is (hscpp and mkdependHS
scripts).  *Don't* set any environment variables to do this.

GHC should then work.  Try "ghc -v" on something simple, to make sure
it compiles and links a program correctly.

If you don't want the profiling libraries (e.g., to save disk space), do:

cd ghc
rm runtime/*_p.a lib/*_p.a
 (or gzip them, temporarily)

If you don't want to concurrent-Haskell libraries (e.g., same reason), do:

cd ghc
rm runtime/*_mc.a lib/*_mc.a
 (or gzip them, temporarily)






Haskell modes for Emacs

1995-12-13 Thread Will Partain


A collection of "Haskell modes" for GNU emacs are in
pub/haskell/misc/haskell-modes-9512.tar.gz on ftp.dcs.gla.ac.uk.  The
README file is attached.

You will also find the .tar.gz file under
/computing/programming/languages/haskell/misc/ on
sunsite.doc.ic.ac.uk.

Comments, suggestions, testimonials, etc., would be welcome.

Will

 README file =

I've collected all the Haskell modes for GNU Emacs that I could lay my
hands on -- there are billions.  A list is attached, grouped by
"family".

I don't like "mode junk" myself, so I don't use any of them.  I will
include advertising or testimonials from happy users if they send them
along...

Will Partain
[EMAIL PROTECTED]
95/12/05

===

* "Chalmers Haskell mode family" -- "Major mode for editing Haskell",
  by Lars Bo Nielsen and Lennart Augustsson.

  chalmers/original -- the original -- version 0.1.

  chalmers/thiemann -- Peter Thiemann added "indentation stuff"
and fontification -- version 0.2.

  chalmers/sof -- Sigbjorn Finne's [EMAIL PROTECTED] hacked
version of Thiemann's.

...

* "Glasgow Haskell mode family" -- originally written by Richard McPhee
  et al., at Glasgow University, as a student project, for Kevin
  Hammond.

  glasgow/original : version 1.0, now maintained by
[EMAIL PROTECTED]

...

* "Simon Marlow Haskell mode family" -- This is the one that comes
  with GHC, versions 0.16 up to at least 0.26.

  simonm/real : the real thing

  simonm/ghc : the one distributed with GHC 0.16-0.26; no particular
reason to prefer this one...

...

* "Yale Haskell mode family" -- Especially good for chatting to a
  Yale-Haskell inferior process :-)

  yale/original : the real thing

  yale/chak : "extended by Manuel M.T. Chakravarty with rudimentary
editing features (including better syntax table) and support
for the font-lock-mode."  Via Hans Wolfgang Loidl
[EMAIL PROTECTED]





Glasgow Haskell 0.25 available (for Linux only)

1995-04-01 Thread William D. Partain


A binary-only from-working-sources no-guarantees snapshot of the
Glasgow Haskell compiler (GHC) for Linux x86 machines is now available
by FTP from ftp.dcs.glasgow.ac.uk, in
pub/haskell/glasgow/ghc-0.25-linux.tar.gz.

This release is the first, long-awaited "registerized" GHC for Linux,
which produces code of reasonable size and speed.  We use our normal
technique of "stealing registers" with GCC's
global-variables-in-registers facility.  We "steal" six of the x86's
eight general-purpose registers, including the C stack-pointer (%esp),
which we use for the heap pointer (Hp).

To use this GHC, you need a special version of GCC, which is also
provided in the distribution (under "gcc-linux-to-linux").  Whatever
you do, please do *not* report any "bugs" in this GCC to bug-gcc --
report them to *me* instead.

One special thing you must watch out for: If GCC "crashes" with a
message about spilling registers, it is *not* a GCC problem.  It means
you must get GHC to "back off" in its register "stealing".  First try
a -monly-4-regs flag, then -monly-3-regs, and as a last resort,
-monly-2-regs.  As far as we know, all Haskell code goes through GHC
with a -monly-2-regs flag (but it produces substantially worse code
with that flag).

Profiling is not provided in this release.

Please report any bugs to [EMAIL PROTECTED]

Will Partain
AQUA project (slave)

Dated: 95/04/01

=== INSTALLATION NOTES ==

Unpack the distribution.

Move "gcc-linux-to-linux" and "ghc-0.25-linux" wherever you like.

Alter the "gcc" script to point to wherever you've put
"gcc-linux-to-linux", and put the "gcc" script wherever you wish in
your PATH.

Make a link to ghc-0.25-linux/ghc/driver/ghc, so that "ghc" will be in
your PATH.

Change *all* hardwired paths in ghc/driver/ghc and in
ghc/utils/hscpp/hscpp to point to where things are on your system.
Notably: where "perl" is (first line of each script), where $TopPwd is
(ghc script), where your gcc cpp is (hscpp script).

GHC should then work.  Try "ghc -v" on something simple, to make sure
it compiles and links a program correctly.




Re: New Haskell 1.3 I/O Definition

1994-12-16 Thread Will Partain


Kevin Hammond writes: "We have attempted ... to consider portability
issues very carefully."

But we may have missed something.  For example, I don't think anyone
has actually *seen* a "Win32 Programmer's Reference Manual" -- i.e.,
the programming interface for most of the world's computers :-( -- and
something may have been overlooked.

If you are an "expert" about some particular system, *please* give
this I/O proposal a good reading!  Does the proposal make sense for
the system in question?  Could it be sort-of-plausibly implemented?
Your feedback will really help.

Haskell is not just for Unix boxes!  I can say this because I am as
Unix-centric as they come :-)

Will

Disclaimer -- not taking credit for others' efforts: I did none of the
Real Work on this I/O proposal.




(not the) NoFib benchmark suite available (version 0.22)

1994-07-28 Thread Will Partain


Though the NoFib Haskell benchmark suite is *still* not ready to go,
we are making our current sources available.  It's not much of a
benchmark suite, but it's a pretty good Haskell compiler test suite :-)

Two files are available on ftp.dcs.glasgow.ac.uk, in
pub/haskell/glasgow:

  -rw-rw-r--  1 partain  2948 Jul 27 19:50 nofib-not-0.22.README
  -rw-rw-r--  1 partain   2741279 Jul 27 19:42 nofib-not-0.22.tar.gz

They are mirrored on src.doc.ic.ac.uk in computing/programming/
languages/haskell/glasgow.

The much higher version number than last time (from 0.00 to 0.22) does
not reflect improvement so much as just using one number for two
releases on the same day.

Will Partain




GHC 0.21: alternate FTP site

1994-06-14 Thread Will Partain


Sorry folks, our FTP is hung, hosed, or hapless, not sure which.
Happily, we are mirrored by the big archive in London,
src.doc.ic.ac.uk; the relevant 0.21 files are in
computing/programming/languages/haskell/glasgow/working.

Please report all FTP problems at our site to
[EMAIL PROTECTED]

Will




Re: Haskell 1.3 [instances]

1993-11-11 Thread Will Partain


   Ian Holyer writes:

   The current restriction that instances must be defined either in
   the class module or the type module is painful.

LISTEN TO THIS MAN!  Trying to use the module system in (what we
imagined to be) a sensible way on the Glasgow Haskell compiler [which
is written in Haskell] has been a nightmare.  Take a pile of
mutually-dependent modules, add the "instance virus" [instances go
with the class or type, and you can't stop them...], and you have
semi-chaos.  All attempts to have export/import lists that "show
what's going on" have been undermined by having to add piles of cruft
to keep instancery happy.

I would go for either of the following not-thought-through choices:

* Instances travel with the *type*, not the class.  99% of the time,
  this is what we want.  If your instance isn't going, add an explicit
  export of the type constructor.  Possibly have a special case for
  instances of user-defined classes for Prelude types...

* Make it so that imported instances whose class/type is out-of-scope
  may be silently ignored (i.e., an exception to the closure rule).

  For example, if I write "import Foo" and Foo's interface includes
  "instance Wibble Wobble" and none of my "imports" happen to bring
  "Wibble" (or "Wobble") into scope, then a compiler may drop this
  instance silently.  It is not an error.  (Of course, if you try to
  *use* such an instance, you will get an error downstream.)

Of course, something that involves new syntax/extra machinery would
also be fine.

Will

PS: Get rid of "default" declarations, too.  No-one uses them. (Hi,
Kevin!)




Glasgow Haskell, v 0.16+, slightly available for DECstations, HP workstations

1993-09-10 Thread Will Partain


I had to do an "initial boot" of Glasgow Haskell to these two
machines, so I am making the binaries available.  Please take account
of the huge disclaimers in the attached README file.

The files are on ftp.dcs.glasgow.ac.uk, in
pub/haskell/glasgow/working/.

Will

=
The ghc-0.16-{decstation,hpux}.tar.gz.?? files are a HUGE (unpacks to
30MB), UNWIELDY, LARGELY UNTESTED distribution of an *unregisterised*
boot to a {DECstation running Ultrix, HP-PA machine running HP-UX}.
Whatever you do, don't expect it to be wonderful.

HP-UX: Note: Only seems to work with GCC as your C compiler.
Furthermore, it *doesn't* seem to work with the "better" GCC stuff
from jaguar.cs.utah.edu.  I got a straight gcc-2.4.5, configured it in
the most obvious way ("./configure hppa1.1-hp-hpux8" [don't remember
exactly]) and built it.  You get no -g support, but it seems to work
with this Haskell system.

To use it (this procedure is also untested...):

Unpack into a directory {ghc-0.17,ghc-0.16+} (this isn't really 0.16...):

% cat ghc-0.16-machine.tar.gz.?? | gunzip -c | tar xfv -

HP-UX: If you wish, rename "ghc-0.16+" to something else:

% mv ghc-0.16+ something-else

Edit the driver script, ghc-num/ghc/driver/ghc, to change all the
hardwired path names that point to this-and-that.  It should be one
simple query-replace (in Emacs terms).

Oh yes, the driver ( perhaps other scripts) are invoked via
#!/usr/local/bin/perl; you may need to change these.

A straight driver bug you might want to fix (untested): Add a "unlink"
line in ghc/driver/ghc at *about* line 1498:

run_something($to_do, 'C compiler');
$PostprocessCcOutput = 0;
unlink($cc_help, $cc_help_s);

Put something in your PATH that "points" to the driver; e.g.,

% ln -s /ghc-num/ghc/driver/ghc ~/bin/hppa/ghc
% rehash

Give it a little spin:

% cat  hello.hs
main _ = [AppendChan stdout "Hello, world!\n"]
^D
% ghc -v -o hello hello.hs
% ./hello

If you're struggling for space, you can probably "strip" the
ghc/compiler/hsc and ghc/parsers/hsp/hsp binaries.

Documentation: I didn't include it in these "distributions"; I'd
suggest you get a ghc-0.16-bin-sun4.tar.gz from any reputable Haskell
archive, unpack somewhere, keep the "docs" directory, and throw the
rest away.

Let me know if anything doesn't work.

Will Partain
[EMAIL PROTECTED]




Glasgow Haskell non-release snapshot, v 0.17, available

1993-08-18 Thread Will Partain


I have dropped a current *not-overly-tested* snapshot of our current
Glasgow Haskell sources on ftp.dcs.glasgow.ac.uk, in
pub/haskell/glasgow/working/ghc-0.17-src-boot.tar.gz.{aa-af} [split
for FTPing robustness; 5+MB in total; untars to 30MB or so].

Joe F Programmer would be well advised to stick with 0.16 (our last
public release).  The ONLY PEOPLE WHO SHOULD BE INTERESTED in 0.17
are:

* Those who've had troubles with registers getting clobbered
  during "ccalls";

* Those concerned with porting the compiler.

Porting situation: I've used these files to do an "initial boot" (==
big, slow compiler) on a DECstation and an HP-PA box.  The chance of
that much success on a 32-bit Unix box is quite high.  Doing the
"registerising" process (to go fast) is still a black art.  If you are
an active porter, please keep us posted on your progress.

Important note: 0.17 unpacks into your *current working directory*,
not into a directory named "ghc-0.17".  So you very well may want
to...

% mkdir ghc-0.17
% cd ghc-0.17
% cat .../ghc-0.17*.a? | gunzip -c | tar xfv -

The reason this non-distribution is so big is that it includes enough
intermediate C (.hc) files to be able to boot without already having a
Haskell compiler.  If you don't need those files, just do:

% cd ghc/compiler
% rm */*.hc
% cd ../lib
% rm */*.hc

As usual, comments to glasgow-haskell-{bugs,request}@dcs.glasgow.ac.uk.

Will Partain




Glasgow Haskell 0.16 documents in PostScript available

1993-07-26 Thread Will Partain


A couple of people have asked about PostScript versions of the
documentation bits of GHC 0.16.  I've put these in
ghc-0.16-docs-in-PostScript.tar.gz (gzipped, 743KB), available by
anonymous FTP from ftp.dcs.glasgow.ac.uk, in pub/haskell/glasgow/; the
contents list is attached.

Will Partain

% gtar tfvz $ftp/haskell/glasgow/ghc-0.16-docs-in-PostScript.tar.gz
-rw-rw-r-- partain 251900 Jul 26 19:30 1993 ghc-0.16/ghc/docs/papers/unboxed.ps
-rw-rw-r-- partain 556116 Jul 26 19:30 1993 ghc-0.16/ghc/docs/papers/stg.ps
-rw-rw-r-- partain 187470 Jul 26 19:30 1993 ghc-0.16/ghc/docs/papers/io-popl.ps
-rw-rw-r-- partain 147319 Jul 26 19:30 1993 ghc-0.16/ghc/docs/papers/update.ps
-rw-rw-r-- partain 168374 Jul 26 19:32 1993 ghc-0.16/ghc/docs/papers/grasp-jfit.ps
-rw-rw-r-- partain 155424 Jul 26 19:30 1993 ghc-0.16/ghc/docs/papers/lazy-imperative.ps
-rw-rw-r-- partain 204940 Jul 26 19:30 1993 ghc-0.16/ghc/docs/papers/strictness.ps
-rw-rw-r-- partain 127001 Jul 26 19:30 1993 ghc-0.16/ghc/docs/release_notes/release.ps
-rw-rw-r-- partain 248371 Jul 26 19:30 1993 ghc-0.16/ghc/docs/users_guide/user.ps
-rw-rw-r-- partain 182351 Jul 26 19:30 1993 
ghc-0.16/ghc/docs/install_guide/installing.ps
-rw-rw-r-- partain 184154 Jul 26 19:30 1993 ghc-0.16/ghc/docs/add_to_compiler/paper.ps
%




Glasgow Haskell compiler, version 0.16, available

1993-07-14 Thread Will Partain


 The Glasgow Haskell Compiler -- version 0.16
 

The second public release of the Glasgow Haskell Compiler is now
available (GHC, version 0.16). Binaries (recommended) and source are
freely available by FTP; details appear below.

GHC 0.16 is still alpha-quality software.  This release in an interim
measure, not as solid as I would prefer.  However, a lot has gone in
since December.  The profiling system is Way Cool.  The compiler now
has a strictness analyser and an update analyser.  Compiled programs
tend to run faster.  Compilation speed is worse.  Bugs remain, but
they tend to be work-around-able.

To run this release, you need a Sun4 or Sun3, probably with 16+MB
memory, and GNU C (gcc), version 2.1 or greater, and "perl".

This system can be built from source using: itself (most likely to
succeed), the previous GHC release (0.10) [least likely], or the
Chalmers HBC compiler [in-between].  Please see the appropriate
documentation for details.

Please report bugs to [EMAIL PROTECTED] and
direct general queries to glasgow-haskell-request@same.

Will Partain
(typist for the AQUA [formerly GRASP] project)



Why a Haskell programmer might want to use GHC
~~
* GHC provides an extensible I/O system, based on a "monad" [1]. (The
  standard Haskell I/O system is built on this foundation.)

* A number of significant language extensions are implemented:
- Fully fledged unboxed data types [2].
- Ability to write arbitrary in-line C-language code, using
  the I/O monad to retain referential transparency.
- Incrementally-updatable arrays, also embedded in a monad.
- Mutable reference types.

* A new profiling system is supplied, which enables you to find out
  which bits of your program are eating both *time* and the *space* [3].

* By default, the system uses a generational garbage collector which
  lets you run programs whose live data is significantly larger than
  the physical memory size before thrashing occurs.  (Conventional
  2-space GC starts thrashing when the live data gets to about half
  the physical memory size.)

* Good error messages.  Well, fairly good error messages.  Line
  numbers are pretty accurate, and during type checking you get
  several (accurate) error reports rather than just one.

* Performance: programs compiled with GHC "often" beat
  Chalmers-HBC-compiled ones.  If you find programs where HBC wins,
  please report it to us, as a bug :-).

Why a functional-language implementor might want to use GHC
~~~
* We have tried very hard to write the compiler in a modular and
  well-documented way, so that other researchers can modify and extend
  it.  One of our goals is specifically to provide a framework to
  support others' work.  Several people are already using it in this
  way.

* Highly configurable runtime system.  Heavy use of C macros means
  that you can modify much of the storage representation without
  telling the compiler.  For example, the system comes with 4
  different garbage collectors! (all working)

* Internals: extensive use of the second-order lambda calculus as an
  intermediate code; the Spineless Tagless G-machine as evaluation
  model [4].

* Various performance-measurement hooks.

Main shortcomings
~
* No interactive system.  This is a batch compiler only.  (Any
  volunteers?)

* Compiler is greedy on resources.  Going via C doesn't help here.

* This system should run on any Unix box.  We haven't had time to do
  any non-Sun ports.  Help or prodding welcome.

References
~~
All these papers come with the distribution [in ghc/docs/papers].

[1] "Imperative functional programming", Peyton Jones  Wadler, POPL '93

[2] "Unboxed data types as first-class citizens", Peyton Jones 
Launchbury, FPCA '91

[3] "Profiling lazy functional languages", Sansom  Peyton Jones,
Glasgow workshop '92

[4] "Implementing lazy functional languages on stock hardware", Peyton
Jones, Journal of Functional Programming, Apr 1992

How to get it
~
This release is available, in whole or in part, from the usual Haskell
anonymous FTP sites, in the directory pub/haskell/glasgow:

ftp.dcs.glasgow.ac.uk  (130.209.240.50)
ftp.cs.chalmers.se (129.16.225.66)  
nebula.cs.yale.edu (128.36.13.1)

[but it may take a little time to propagate the files... -wdp]

We are mirrored by src.doc.ic.ac.uk, in
computing/programming/languages/haskell/glasgow, and you can get files
from there by every means known to humanity.

These are the available files (.Z for compressed, .gz for gzipped) --
some are `on demand', ask if you don't see them:

ghc-0.16-bin-sun4.tar.{Z,gz} A binary distribu

Glasgow Haskell 0.10 available for Sun3s and porting

1993-01-30 Thread Will Partain

In the last few days, I needed to do a Sun3 (68020) port of Glasgow
Haskell, version 0.10.  Some of you may be interested, so I am making
it available by anonymous FTP, from ftp.dcs.glasgow.ac.uk, in
pub/haskell/glasgow.  I have *not* tested the result thoroughly.

Sun3 binary distribution [in ghc-0.10-bin-sun3.tar.Z]: Everything you
need to run on a Sun3.  Roughly: move the files into place, fiddle the
driver script, and go.

Rudimentary porting kit [in the files working/*]: I built the Sun3
version from GHC-produced intermediate C (.hc) files.  I have gathered
up a set of the files required (ghc-0.10-hc-files.tar.Z), over and
above the standard source distribution.  I've also made a set of
*unofficial* diffs (vs 0.10) that reflect everything I did to get it
going, including GCC ``registerization'' to make it go faster.  The
diffs include some new documentation about porting.

It should not be *too* difficult to get an unregisterized (slow)
version going on any non-small Unix machine with plenty of disk space.
Also, it shouldn't be too hard to get a registerized version going on
any 680x0 Unix machine.  If you decide to take a porting plunge,
please get in touch beforehand, so that we can avoid duplicated
efforts.

Reminders: Glasgow Haskell, version 0.10, was released in early
December, 1992.  It is best supported on Sun4s, and there is a Sun4
binary distribution available, along with the complete source.

Will Partain




some haskell FAQ info (occasional posting, long)

1992-10-27 Thread Will Partain

Haskell:  Current status


Simon Peyton Jones, Phil Wadler, Will Partain
Cordy Hall, Kevin Hammond

Dept of Computing Science, Glasgow University, 
Glasgow G12 8QQ,  Scotland.

email: [EMAIL PROTECTED]

(April 1991; additions, November 1991, June 1992)

The Haskell language

In September 1987 a meeting was held at the conference on Functional
Programming Languages and Computer Architecture in Portland, Oregon,
to discuss an unfortunate situation in the functional programming
community: there had come into being more than a dozen non-strict,
purely functional programming languages, all similar in expressive
power and semantic underpinnings.  There was a strong consensus at the
meeting that more widespread use of this class of functional languages
was being hampered by the lack of a common language.  It was decided
that a committee should be formed to design such a language, providing
faster communication of new ideas, a stable foundation for real
applications development, and a vehicle through which others would be
encouraged to use functional languages.

The Haskell committee released its report on 1 April 1990. A revised
version (Version 1.2) appeared in SIGPLAN Notices 27(5) (May 1992),
along with a tutorial on Haskell by Hudak and Fasel.


Implementations of Haskell
~~
This is a frank summary of the implementations of Haskell known to
us.

  hbc   ChalmersA serious and mature compiler.  Use this 
  hbi   if you want to write large Haskell programs.
hbi is an interactive version.  Written in LML.
You need a big machine.

  glhc  Glasgow Another serious compiler, but less mature than
hbc.  Intended partly as a framework for
implementors.  Written in Haskell, generates
C.  You need a big machine.

  Y2.0 Yale A compiler from Haskell to Lisp, built on top
of Common Lisp (EuLisp and Scheme should also
work).  An interactive, integrated Haskell
programming environment.  Supports both large
scale Haskell programming and educational use.
Needs a moderately big machine - we expect to
release a Mac and PC version soon.  Supports
language implementors.

  gofer YaleAn interpreter for a language very similar to
Haskell.  A "best buy" if you just want to get
started.  Much much faster to use than the
compilers below for small programs, because it
compiles and loads programs amazingly fast.
Written in C, and portable; you don't need a
big machine! Only implementation to work on
IBM PCish things.

Below appears a bit more information about each of these
implementations.  

The Haskell mailing list

There is an electronic mailing list to discuss technical issues
related to Haskell.  To join this list, send your request to
"[EMAIL PROTECTED]" (Europe and Australasia) or
"[EMAIL PROTECTED]" (rest of world) as appropriate.

Standard archive sites for Haskell stuff


You can use anonymous FTP (username: anonymous; password: your e-mail
address) to these hosts, where you will find things in "pub/haskell"
and its subdirectories.

Site Host name  Raw IP#s (these can change)

Chalmers animal.cs.chalmers.se  129.16.225.66
Glasgow  ftp.dcs.glasgow.ac.uk  130.209.240.50
Yale nebula.cs.yale.edu 128.36.13.1


DETAILS OF IMPLEMENTATIONS
~~

The Glasgow compiler

The Glasgow Haskell compiler has the following attributes:

* Freely available (see below).

* Written in Haskell.

* Generates C as its target code -- hence highly portable.

* Specifically designed to act as a "motherboard" into which 
  others can "plug in" their own strictness analyser, profiler, 
  front end, back end, or other special pass.

* Internally, it uses the second-order polymorphic lambda calculus to
  preserve correct type information in the face of substantial program
  transformations.

* Back end based on the Spineless Tagless G-machine -- our abstract
  machine for non-strict functional languages.  (Paper available.)

* Plants code to gather profiling information, of two sorts.  First,
  low-level counts of various aspects of the abstract machine model.
  Second, and more interesting, programmer-level space and time
  profiling of "cost cen

glorious Glasgow Haskell compiler, 0.06, PATCH 1

1992-03-30 Thread Will Partain

Lennart Augustsson reported a bug whereby some of your configuration
instructions were ignored and the system proceeded to build 100MB of
stuff!

Enclosed is a shar file with a small patch to fix this.  Also
available from the usual archive sites.

In case you missed the announcement, version 0.06 is a pre-release for
hackers, porters, and enthusiasts.  It is unlikely to be useful to
someone just trying to get a Haskell program running.  (I can
recommend Lennart's HBC system for that :-)

Will Partain

#!/bin/sh
# This is a shell archive (produced by shar 3.49)
# To extract the files from this archive, save it to a file, remove
# everything above the "!/bin/sh" line above, and type "sh file_name".
#
# made 03/30/1992 08:38 UTC by partain@tegua
# Source directory /tmp_mnt/local/fp/src
#
# existing files will NOT be overwritten unless -c is specified
#
# This shar contains:
# length  mode   name
# -- -- --
#   6257 -rw-rw-r-- ghc-0.06-patch-1
#
# = ghc-0.06-patch-1 ==
if test -f 'ghc-0.06-patch-1' -a X"$1" != X"-c"; then
echo 'x - skipping ghc-0.06-patch-1 (File already exists)'
else
echo 'x - extracting ghc-0.06-patch-1 (Text)'
sed 's/:X//'  'SHAR_EOF'  'ghc-0.06-patch-1' 
1.  Apply this patch with
X
X   % cd top-of-your-GHC-world
X   % patch -p0  this-patch-file
X
2.  Delete the file lib/split_hc.  (If you've already built things
Xsuccessfully, don't worry about this.)
X
3.  The main problem is that {lib,runtime}/Jmakefile were overriding
Xthe chosen # of garbage collectors to compile for (with
XJMAKE_DEFINES).  So you would get a *lot* more than you bargained
Xfor!
X
XIf you've already tried building things  you only wanted the
Xtwo-space collector ("std" setup), just delete all the junk
Xassociated with the other collectors.  Something like this will
Xdo:
X
X   % cd top-of-GHC-world
X   % (cd lib; rm */*_1s.o */*_du.o */*_ap.o)
X   % (cd runtime; rm */*_1s.sun?.o */*_du.sun?.o */*_ap.sun?.o)
X
X(You get the idea...) In each of those directories, also do:
X
X   % make Makefile
X   % make Makefile # yes, *twice*
X
4.  You won't hurt anything by spinning over the whole tree, thusly:
X
X   % cd top-of-GHC-world
X   % make Makefile
X   % make Makefiles
X   % make depend
X   % make all
X
diff -rc1 /local/fp2/ghc-0.06/PATCHLEVEL ./PATCHLEVEL
*** /local/fp2/ghc-0.06/PATCHLEVEL  Fri Feb 14 12:03:55 1992
--- ./PATCHLEVELMon Mar 30 09:17:09 1992
***
*** 1 
! The Glorious New Glasgow Haskell Compiler, version 0.06, patchlevel 0
--- 1 
! The Glorious New Glasgow Haskell Compiler, version 0.06, patchlevel 1
diff -rc1 /local/fp2/ghc-0.06/compiler/Jmakefile ./compiler/Jmakefile
*** /local/fp2/ghc-0.06/compiler/Jmakefile  Fri Mar 27 19:19:41 1992
--- ./compiler/JmakefileSun Mar 29 13:57:24 1992
***
*** 319,321 
X  HaskellCompileWithMoreHeap(deSugar/Match,500)
! HaskellCompileWithMoreHeap(main/Main,650)
X  HaskellCompileWithMoreHeap(prelude/AbsPrel,500)
--- 319,321 
X  HaskellCompileWithMoreHeap(deSugar/Match,500)
! HaskellCompileWithMoreHeap(main/Main,700)
X  HaskellCompileWithMoreHeap(prelude/AbsPrel,500)
diff -rc1 /local/fp2/ghc-0.06/lib/Jmakefile ./lib/Jmakefile
*** /local/fp2/ghc-0.06/lib/Jmakefile   Fri Mar 20 16:12:57 1992
--- ./lib/Jmakefile Mon Mar 30 08:47:24 1992
***
*** 32,34 
X
! JMAKE_DEFINES = -DGC2s_Wanted -DGC1s_Wanted -DGCdu_Wanted -DGCap_Wanted
X
--- 32,34 
X
! /* JMAKE_DEFINES = -DGC2s_Wanted -DGC1s_Wanted -DGCdu_Wanted -DGCap_Wanted */
X
***
*** 57,58 
--- 57,60 
X   chmod a+x $@
+
+ ExtraStuffToClean( ./split_hc )
X
diff -rc1 /local/fp2/ghc-0.06/lib/split_hc.prl ./lib/split_hc.prl
*** /local/fp2/ghc-0.06/lib/split_hc.prlFri Mar 27 08:41:49 1992
--- ./lib/split_hc.prl  Sun Mar 29 14:28:33 1992
***
*** 104,105 
--- 104,106 
X  print JMKF "\$(SRCS_HC_${f_base_fileonly}) : ${f_base}.hc\n";
+ print JMKF "\t\$(RM) ${f_base}.jm \$(SRCS_HC_${f_base_fileonly})\n";
X  print JMKF "\t./split_hc ${f_base}.hc\n\n";
***
*** 107,109 
X  # ... and the "clean" line for it...
! print JMKF "ExtraStuffToClean( \$(SRCS_HC_${f_base_fileonly}) )\n";
X
--- 108,110 
X  # ... and the "clean" line for it...
! print JMKF "ExtraStuffToClean( \$(SRCS_HC_${f_base_fileonly}) ${f_base}.jm
 )\n";
X
diff -rc1 /local/fp2/ghc-0.06/mkworld/AllProjects.tmpl
 ./mkworld/AllProjects.tmpl
*** /local/fp2/ghc-0.06/mkworld/AllProjects.tmplWed Mar 25 13:04:25 1992
--- ./mkworld/AllProjects.tmpl  Sun Mar 29 14:35:14 1992
***
*** 136,138 
X  #ifndef InstBinFlags
! #define InstBinFlags -m 0555 InstOwner InstGroup InstF

Re: Haskell library

1992-02-17 Thread Will Partain

Lennart Augustsson writes:

The Haskell library seems to be contain few entries
(none to be exact), so I've decided to add something.
...

Actually, I've put the Haskell-y bits from Stephen Bevan's archive
into the library here at Glasgow
(ftp.dcs.glasgow.ac.uk:^ftp/pub/haskell/library).  I'll copy Lennart's
bits over sometime soon.  There's a .../library/incoming directory for
anyone wanting to drop something in.

By some magical process, the sites at Yale, Chalmers, and Glasgow will
all end up with the same library bits (eventually).

Will