[Haskell-cafe] Can cabal be turned into a package manager?

Richard O'Keefe ok at cs.otago.ac.nz
Fri Dec 14 03:11:06 CET 2012


On 13/12/2012, at 7:12 PM, Rustom Mody wrote:

> On Thu, Dec 13, 2012 at 1:29 AM, Brandon Allbery <allbery.b at gmail.com> wrote:
> On Wed, Dec 12, 2012 at 12:51 PM, Andre Cunha <andrecunha.usp at gmail.com> wrote:
> Janek, did you mean something like Rubygems (http://rubygems.org)? It manages the download, installation and manipulation of Ruby packages, called "gems". A gem can contain executable programs or libraries (just like traditional packages, like .rpm). Rubygems also handles dependencies between gems, and allows you to update them.
> 
> But doesn't solve the actual problem;
> 
> Considering that this question is such a FAQ, I believe it would be worthwhile discussing  what we think the 'actual problem' is.
> 
> When Algol-60 was being implemented, the challenge was how to compile using only 2000 words of memory (or something as ridiculous as that). The solution was to make a compiler with 20-odd passes.
> [Sorry if the details are wrong; its from (neurological) memory]

Why rely on memory?
The Algol-60 compiler Dijkstra worked on was for the Electrologica X1.
"The basic X1 machine, fitting in a large writing desk,
 consisted of an arithmetic unit and several registers,
 in particular two 27-bit accumulators A and S, a condition register,
 an instruction register, and a 16-bit index register.  A and S could
 be used together as a single double-length register for multiply and
 divide operations.  The basic machine had a built-in 'live'
 (i.e. random-access) memory of 512 words of 28 bits (including 1 sign
 bit and 1 parity bit); and 700 words of 'dead' (i.e. read-only) memory.
 More memory could be added in separate storage cabinets, up to 32768
 words, including additional read-only memory.  Normally there was no
 magnetic drum, disk or other type of secondary memory (a magnetic
 drum was an optional extension, however)".
[http://www.science.uva.nl/faculteit/museum/X1.php   -- edited lightly]
Apparently the actual machine the compiler was built on had 4 kilo-words.

That compiler read the source paper tape exactly twice.

"The greatest shortcoming of the system, however, was the almost
 complete absence of syntax checks and run–time checks", something
that was to be repeated in the development of C.  Another front end
that did more thorough syntax checking was written a few years later;
Lint saw _that_ part of Algol 60 history repeated too.

A leaflet in my letterbox yesterday advertised a headless box with 16GB
of memory for NZD 700.  We've come a long way.





More information about the Haskell-Cafe mailing list