## Identifying your system ##
We'll assume you're using either Mac OS X, or Windows, or Linux.
+If you're running **iOS**, you'll have a much harder time (perhaps impossible,
+perhaps not) getting this software to run on your machine, and we can't give
+you any guidance.
If you're using **Mac OS X**, take note of what version of the Mac OS you're
-running: "Tiger" 10.4, or "Leopard" 10.5, or "Snow Leopard" 10.6. Furthermore,
-you'll be in one of two subgroups:
-
-* You'll have Apple's Xcode and the independent MacPorts system
- installed.
-
- Xcode is available at
- <http://developer.apple.com/technologies/tools/xcode.html>
- You have to register as an Apple Developer to download it. This
- is free but requires you to accept a legal agreement with Apple.
- The latest version of Xcode to work with Leopard is 3.14; more
- recent versions require Snow Leopard.
-
- The MacPorts system is available at
- <http://www.macports.org/>
- This automates the building of Unix-type software on your Mac; it
- makes it a lot easier to check for dependencies, use more-recent
- versions of things, and so on.
-
-* Or you won't have those installed. (Most Mac users will be in this group.)
- Then you'll need pre-packaged (and usually pretty GUI) installers for
- everything. These are great when they're available and kept up-to-date;
- however those conditions aren't always met.
-
+running. (Under the Apple Menu, select "About this Mac".)
+
+* Leopard (10.5)
+* Snow Leopard (10.6)
+* Lion (10.7)
+* Mountain Lion (10.8)
+* Mavericks (10.9)
+* Yosemite (10.10)
+
+Furthermore, Mac users will be in one of two subgroups:
+
+* You'll have Apple's Xcode and the independent MacPorts system
+ installed. (Probably you don't. If you don't know what I'm talking about, you don't have these.)
+
+ If you don't have these, but want to try this route, you can read about
+ the MacPorts system at <http://www.macports.org/>.
+ This automates the building of Unix-type software on your Mac; it
+ makes it a lot easier to check for dependencies, use more-recent
+ versions of things, and so on. (Though as it happens, MacPorts only has an older version of
+ our chosen implementation of Scheme.)
+
+ There are also other package management systems available for the Mac, notably Homebrew and Fink. I only know a little bit about them.
+
+ There are instructions about how to get Xcode on the [Installing MacPorts](https://www.macports.org/install.php) page.
+ Some versions of [Xcode](http://developer.apple.com/xcode.html) are available for free on the Mac App Store.
+ Other versions are available through Apple's Developer website (some of these are free, but do require you to
+ register with Apple as an "Apple Developer", which involves clicking to accept a legal agreement with Apple).
+ I have an older version of this installed. If you download a recent version, email me and let me know how the
+ process works so I can tell others.
+ <!--
+ The latest version of Xcode to work with 10.5 / Leopard is 3.14; more recent versions (>= 3.2) require 10.6 / Snow Leopard.
+ 3.2.6 is last version that can be downloaded for free by users of 10.6 / Snow Leopard. (But if they pay, they can use up to Xcode 4.2.)
+ Xcode 4.1 was free to all users of 10.7 / Lion. Is Xcode 4.6.x still available for free? Are Xcode 5.x and/or 6.x available for free?
+ -->
+
+* Or you won't have those installed. (**Most Mac users will be in this group.**)
+ Then you'll need pre-packaged (and usually pretty GUI) installers for
+ everything. These are great when they're available and kept up-to-date;
+ however sometimes those conditions aren't met.
+
+
If you're using **Windows**, you'll be in one of two subgroups:
-* You'll have the Cygwin system installed:
- <http://www.cygwin.com/>
- This puts a Unix-like layer on top of your Windows system,
- and makes it easier for you to use the same software everybody
- else will be using, without its needing as much special-for-Windows
- treatment. However, many of you won't have this installed.
+* You'll have the Cygwin system <http://www.cygwin.com/> installed.
+ This puts a Unix-like layer on top of your Windows system,
+ and makes it easier for you to use the same software everybody
+ else will be using, without its needing as much special-for-Windows
+ treatment. However, many of you won't have this installed.
+
+* You won't have Cygwin installed. (**Most Windows users will be in this group.**)
+ You might in theory have a different group of compilers installed
+ (MinGW, or Microsoft Visual C++) but we'll assume that the overwhelming
+ majority of users in this group don't have access to a compiler and
+ need pre-packaged installers for everything.
-* You won't have Cygwin installed. You might in theory have
- a different group of compilers installed (Microsoft Visual C++) but
- we'll assume that the overwhelming majority of users in this group
- don't have access to a compiler and need pre-packaged installers
- for everything.
If you're using **Linux**, you could be using any one of numerous packaging
systems.
-* We'll give examples using the packaging system shared by Debian and Ubuntu,
- and we'll assume that those of you using different packaging systems will know
- how to make the relevant substitutions. You may also want to take note of the
- output of the "uname -srm" command. On my machine this tells me "Linux
- 2.6.35-ARCH x86_64". That tells me I'm running the x86_64 (as opposed to the
- i686 or i386 or whatever) version of Linux, and that I'm running kernel
- version 2.6.35.
+* We'll give examples using the packaging system shared by Debian and Ubuntu,
+ and we'll assume that those of you using different packaging systems will know
+ how to make the relevant substitutions.
+
+
+**For everyone**, a general item to take note of is what "processor architecture" your machine is running. Three of the possibilities are:
+* One of Intel's i386, i486, i586, i686 architectures. These are collectively known as "x86" or "IA-32" or sometimes just "32-bit".
+* Intel or AMD's x86\_64 architecture. This is also called "x64" or "amd64" or "IA-64" or sometimes just "64-bit". (Note that these *aren't* "x86" machines, even though "x86\_64" starts with those letters.)
+* ARM or some other architecture. These are generally lower-powered machines, like iPads. Some of the software we're proposing *might* in principle be capable of running on such machines, but installers don't seem to be available. We'll assume you have access to an x86 or x86\_64 machine.
+
+On Linux or Mac OS X, you can open a terminal and type `uname -m`. If the
+result is "x86\_64", then you've got x64/64-bit. If it's "i386" or something
+like that, then you've got x86/32-bit. I think that Mac OS Xs from 10.7 / Lion
+forward have all been x86\_64-only.
+
+On Windows,
+[here is a page that can help you figure this out](http://windows.microsoft.com/en-us/windows/32-bit-and-64-bit-windows).
+I think that most machines running Windows XP will be x86/32-bit (unless it's
+a version of Windows with "64-bit" or "x64" in its title); machines running
+Windows Vista or Windows 7 or Windows 8 could be running either x86/32-bit or
+x64/64-bit.
## PLEASE REPORT PROBLEMS (AND SOLUTIONS!) ##
## Getting Scheme ##
-**Scheme** is one of two major dialects of *Lisp*, which is a large family of
-programming languages. The other dialect is called "CommonLisp." Scheme is the
-more clean and minimalistic dialect, and is what's mostly used in academic
-circles.
+**Scheme** is one of two or three major dialects of *Lisp*, which is a large family
+of programming languages. The other dialects are called "Common Lisp" and "Clojure".
+Scheme is the more clean and minimalist dialect, and is what's mostly used in
+academic circles.
+
+* In your web browser:
+
+ There is a (slow, bare-bones) version of Scheme available for online use at <http://tryscheme.sourceforge.net/>.
Scheme itself has umpteen different "implementations", which share most of
their fundamentals, but have slightly different extensions and interact with
-the operating system differently. One major implementation used to be called
-PLT Scheme, and has just in the past few weeks changed their name to Racket.
-This is what we recommend you use. (If you're already using or comfortable with
-another Scheme implementation, though, there's no compelling reason to switch.)
+the operating system differently. One major implementation is called Racket,
+and that is what we recommend you use. (A few years back they were called PLT Scheme, but then
+they changed their name to Racket.)
+If you're already using or comfortable with
+another Scheme implementation, though, there's no compelling reason to switch.
+
+If for some reason you have problems with Racket, other implementations you could
+try are
+[Chicken](http://www.call-cc.org),
+[Gauche](http://practical-scheme.net/gauche),
+or [Chibi](https://code.google.com/p/chibi-scheme). The later in that list you go, the more likely it
+is that you'll have to compile the software yourself. (Thus Mac users will need Xcode.)
+
+Racket stands to Scheme in something like the relation Firefox stands to HTML. It's one program (or platform) among others for working with the Scheme language; and many of those programs (or web browsers) permit different extensions, have small variations, and so on.
+
+Racket has several components. The two most visible components for us are a command-line interpreter named "racket" and a teaching-friendly editor/front-end named "DrRacket". You will probably be working primarily or wholly in the latter.
+<!-- "racket" used to be mzscheme, "DrRacket" used to be DrScheme -->
+
+The current version of Racket is 6.1.1 (released November 2014).
+
+* **To install in Windows**
+
+ Go to <http://racket-lang.org/download/>. Download and install the "Windows x64" version. (Or the "Windows x86" verson if you have an older, 32-bit system.)
+
+* **To install on Mac without MacPorts**
-Since the name change is so recent, you're likely to run across both sets of names.
+ Go to <http://racket-lang.org/download/>. Download and install the option for your system, most likely "Macintosh
+ OS X (Intel 64-bit)".
-PLT Scheme had three salient components: the command-line version "mzscheme", a
-GUI extension "MrEd", and a teaching-friendly editor/front-end "DrScheme". In
-Racket these have been renamed "racket", "gracket", and "DrRacket",
-respectively.
+* **To install on Mac with MacPorts**
+ Unfortunately, MacPorts doesn't have Racket itself available. It only has an older version from when they still called
+ themselves PLT Scheme. And even then, it only has the command-line program "mzscheme" (what's nowadays called "racket"); it
+ doesn't have the GUI program that corresponds to what's now called "DrRacket". You can install mzscheme by opening a Terminal
+ window and typing:
-* **To install in Windows**
+ sudo port install mzscheme
- Go to <http://racket-lang.org/download/>. Download and install the "Windows x86" version.
+ <!-- mzscheme v4.1.5, from March 2009; latest mzscheme is 4.2.5, from April 2010 -->
-* **To install on Mac without MacPorts**
+ If you want the GUI components, I think you'll need to use the
+ "Mac/without MacPorts" installation options above. Or you could try the Chicken Scheme implementation instead of Racket. This is more current.
+ To do that, type:
- Go to <http://racket-lang.org/download/>. Download and install the option for your system, most likely "Macintosh
- OS X (Intel)"
+ sudo port install chicken readline
-* **To install on Mac with MacPorts**
+ <!-- chicken v4.8.0.2, from Feb 2013; latest available is 4.9.0.1, from Nov 2014 -->
- You can install a command-line version of
- PLT Scheme (dating from early 2009) by opening a Terminal
- and typing:
+ Whether you use mzscheme or Chicken, I recommend also typing:
- sudo port install mzscheme
+ sudo port install rlwrap
- If you want the GUI components, I think you'll need to use the
- "Mac/without MacPorts" installation options above.
+ then if you ever use the command-line program `mzscheme` (or `racket`, for that matter), you should start it by typing `rlwrap mzscheme` (or whatever). This gives
+ you a nice history of the commands you've already typed, which you can scroll up and down in with your
+ keyboard arrows.
-* **To install on Linux**
+* **To install on Linux**
- Use your packaging system, for example, open a Terminal and
- type:
+ Use your packaging system, for example, open a Terminal and
+ type:
- sudo apt-get install plt-scheme
+ sudo apt-get install racket
- It's very likely that your packaging system has some version of
- PLT Scheme available, so look for it. However, if you can't find it you
- can also install a pre-packaged binary from the Racket website: <http://racket-lang.org/download/>
- Choose the option for your version of Linux (Ubuntu, Debian, and two
- varieties of Fedora are available)
+ It's very likely that your packaging system has some version of
+ Racket available, so look for it. However, if you can't find it you
+ can also install a pre-packaged binary from the Racket website at <http://racket-lang.org/download/>.
+ Choose the option for your version of Linux (Ubuntu and Debian are available).
+
+ As above, I recommend you also type:
+
+ sudo apt-get rlwrap
+
+ then if you ever use the command-line program `mzscheme` (or `racket`), you should start it by typing `rlwrap mzscheme` (or whatever). This gives
+ you a nice history of the commands you've already typed, which you can scroll up and down in with your
+ keyboard arrows.
## Getting OCaml ##
**Caml** is one of two major dialects of *ML*, which is another large family of
programming languages. The other dialect is called "SML" and has several
-implementations. But Caml has only one active implementation, OCaml, developed
-by the INRIA academic group in France.
+implementations. But Caml has only one active implementation, OCaml or
+Objective Caml, developed by the INRIA academic group in France.
+Sometimes we may refer to Caml or ML
+more generally; but you can assume that what we're talking about always works more
+specifically in OCaml.
It's helpful if in addition to OCaml you also install the Findlib add-on.
This will make it easier to install additional add-ons further down the road.
However, if you're not able to get that working, don't worry about it much.
+The current version of OCaml is 4.02.1 (released October 2014).
+
+Another instruction page focuses on [OPAM](http://ocaml.org/docs/install.html), also [this](https://opam.ocaml.org).
+
+* In your web browser:
+
+ There is a (slow, bare-bones) version of OCaml available for online use at <http://try.ocamlpro.com/>.
+
+* **To install in Windows**
+
+ Go to <http://caml.inria.fr/download.en.html>.
+ You can probably download and install the
+ "Self installer for the port based on the MinGW toolchain"
+ even if you don't know what MinGW or Cygwin are.
+ Some features of this require Cygwin, but it looks like
+ it should mostly work even for users without Cygwin.
+ At the time of this writing, only an installer for the previous
+ version of OCaml (3.11.0, from January 2010) is available.
+
+ To install the Findlib add-on, you must have the
+ Cygwin system installed. We assume few of you do,
+ so we're not going to try to explain how to do this.
+ If you want to figure it out yourself, go to the
+ Findlib website at <http://projects.camlcity.org/projects/findlib.html>.
+
+* **To install on Mac without MacPorts**
+
+ To install OCaml 3.12 (just released this summer), go to
+ <http://caml.inria.fr/download.en.html>
+ and download and install the "Binary distribution for Mac OS X"
+
+ To install the Findlib add-on, you'll need the Xcode development tools
+ to compile it yourself. Once you get that far, it's probably easiest
+ for you to install MacPorts and just install things using the MacPorts
+ instructions. (Use the MacPorts version of OCaml, instead of installing
+ the package from the caml.inria.fr website, as described above)
+ However, if you do have Xcode, and want to do without MacPorts, then
+ what you need to do is download Findlib from
+ <http://download.camlcity.org/download/findlib-1.2.6.tar.gz>.
+ Unpack the download, open a Terminal and go into the folder you just
+ unpacked, and type:
+
+ ./configure
+ make package-macosx
+
+ This will build an installer package which you should be able to
+ double-click and install.
+
+* **To install on Mac with MacPorts**
+
+ You can install the previous version of OCaml (3.11.2,
+ from January 2010), together with the Findlib add-on, by opening a Terminal
+ and typing:
+
+ sudo port install ocaml caml-findlib
+
+ As with Scheme, it's helpful to also have rlwrap installed, and to start OCaml as `rlwrap ocaml`. This gives
+ you a nice history of the commands you've already typed, which you can scroll up and down in with your
+ keyboard arrows.
+
+* [More details about installing OCaml on Macs, if needed](http://cocan.org/getting_started_with_ocaml_on_mac_os_x)
+
+* **To install on Linux**
+
+ Use your packaging system, for example, open a Terminal and
+ type:
+
+ sudo apt-get install ocaml ocaml-findlib
+
+ That will install a version of OCaml and the Findlib add-on.
+
+ If for some reason you can't get OCaml through your
+ packaging system, you can go to
+ <http://caml.inria.fr/download.en.html>.
+ Pre-packaged binary installers are available for several Linux systems.
+
+ If you can't get findlib through your packaging system, you'll
+ need to download it from
+ <http://download.camlcity.org/download/findlib-1.2.6.tar.gz>.
+ and use gcc to compile it yourself. If you don't know how to
+ do that, you probably don't want to attempt this.
+ Here are the INSTALL notes:
+ <https://godirepo.camlcity.org/svn/lib-findlib/trunk/INSTALL>.
+
+ As with Scheme, it's helpful to also have rlwrap installed, and to start OCaml as `rlwrap ocaml`. This gives
+ you a nice history of the commands you've already typed, which you can scroll up and down in with your
+ keyboard arrows.
+
+
+## Getting Haskell ##
+
+This last step is less crucial than the others, since we will be focusing
+primarily on Scheme and OCaml. However we, and the readings you come across,
+will sometimes mention Haskell, so it might be worth your installing this too,
+so that you have it available to play around with.
+
+Haskell is used a lot in the academic contexts we'll be working through. At one point, Scheme
+dominated these discussions but now Haskell seems to do that.
+
+Haskell's surface syntax differs from Caml, and there are various important things one can do in
+each of Haskell and Caml that one can't (or can't as easily) do in the
+other. But these languages also have *a lot* in common, and if you're
+familiar with one of them, it's generally not hard to move between it and the
+other.
+
+* In your web browser:
+
+ There is a (slow, bare-bones) version of Haskell available for online use at <http://tryhaskell.org/>.
+
+sudo apk-get install haskell-platform
+
+<https://github.com/pittsburgh-haskell/haskell-installation>
+
+<https://www.haskell.org/platform>
+
+Getting started: <https://wiki.haskell.org/Haskell_in_5_steps>
-* **To install in Windows**
-
- Go to <http://caml.inria.fr/download.en.html>.
- You can probably download and install the
- "Self installer for the port based on the MinGW toolchain"
- even if you don't know what MinGW or Cygwin are.
- Some features of this require Cygwin, but it looks like
- it should mostly work even for users without Cygwin.
- At the time of this writing, only an installer for the previous
- version of OCaml (3.11.0, from January 2010) is available.
-
- To install the Findlib add-on, you must have the
- Cygwin system installed. We assume few of you do,
- so we're not going to try to explain how to do this.
- If you want to figure it out yourself, go to the
- Findlib website: <http://projects.camlcity.org/projects/findlib.html>.
-
-* **To install on Mac without MacPorts**
-
- To install OCaml 3.12 (just released the summer), go to:
- <http://caml.inria.fr/download.en.html>
- and download and install the "Binary distribution for Mac OS X"
-
- To install the Findlib add-on, you'll need the Xcode development tools
- to compile it yourself. Once you get that far, it's probably easiest
- for you to install MacPorts and just install things using the MacPorts
- instructions. (Use the MacPorts version of OCaml, instead of installing
- the package from the caml.inria.fr website, as described above)
- However, if you do have Xcode, and want to do without MacPorts, then
- what you need to do is download Findlib from:
- <http://download.camlcity.org/download/findlib-1.2.6.tar.gz>
- Unpack the download, open a Terminal and go into the folder you just
- unpacked, and type:
-
- ./configure
- make package-macosx
-
- This will build an installer package which you should be able to
- double-click and install.
-
-* **To install on Mac with MacPorts**
-
- You can install the previous version of OCaml (3.11.2,
- from January 2010), together with the Findlib add-on, by opening a Terminal
- and typing:
-
- sudo port install ocaml caml-findlib
-
-* **To install on Linux**
-
- Use your packaging system, for example, open a Terminal and
- type:
-
- sudo apt-get install ocaml ocaml-findlib
-
- That will install a version of OCaml (probably 3.11.2, from January 2010)
- and the Findlib add-on.
-
- If for some reason you can't get OCaml through your
- packaging system, you can go to:
- <http://caml.inria.fr/download.en.html>
- Pre-packaged binary installers are available for several Linux systems.
-
- If you can't get findlib through your packaging system, you'll
- need to download it from:
- <http://download.camlcity.org/download/findlib-1.2.6.tar.gz>
- and use gcc to compile it yourself. If you don't know how to
- do that, you probably don't want to attempt this.
- Here are the INSTALL notes:
- <https://godirepo.camlcity.org/svn/lib-findlib/trunk/INSTALL>