Warning: this is an htmlized version!
The original is across this link,
and the conversion rules are here.
#######
#
# E-scripts on ML.
#
# Note 1: use the eev command (defined in eev.el) and the
# ee alias (in my .zshrc) to execute parts of this file.
# Executing this file as a whole makes no sense.
#
# Note 2: be VERY careful and make sure you understand what
# you're doing.
#
# Note 3: If you use a shell other than zsh things like |&
# and the for loops may not work.
#
# Note 4: I always run as root.
#
# Note 5: some parts are too old and don't work anymore. Some
# never worked.
#
# Note 6: the definitions for the find-xxxfile commands are on my
# .emacs.
#
# Note 7: if you see a strange command check my .zshrc -- it may
# be defined there as a function or an alias.
#
# Note 8: the sections without dates are always older than the
# sections with dates.
#
# This file is at <http://angg.twu.net/e/ml.e>
#           or at <http://angg.twu.net/e/ml.e.html>.
#        See also <http://angg.twu.net/emacs.html>,
#                 <http://angg.twu.net/.emacs[.html]>,
#                 <http://angg.twu.net/.zshrc[.html]>,
#                 <http://angg.twu.net/escripts.html>,
#             and <http://angg.twu.net/>.
#
#######





  (find-es "isabelle")

# «.sml-nj»		(to "sml-nj")
# «.sml-nj-isabelle»	(to "sml-nj-isabelle")
# «.ocaml»		(to "ocaml")
# «.lego»		(to "lego")
# «.mosml»		(to "mosml")
# «.hol90.10»		(to "hol90.10")
# «.hol98»		(to "hol98")
# «.ocaml-etch»		(to "ocaml-etch")
# «.ocaml-deb-src»	(to "ocaml-deb-src")
# «.camlp5-deb-src»	(to "camlp5-deb-src")
# «.camlp5»		(to "camlp5")
# «.sml-nj-etch»	(to "sml-nj-etch")
# «.ocaml-mode»		(to "ocaml-mode")
# «.twelf»		(to "twelf")
# «.ocaml-lenny»	(to "ocaml-lenny")
# «.labltk»		(to "labltk")
# «.plzoo»		(to "plzoo")
# «.levy»		(to "levy")
# «.polyml»		(to "polyml")
# «.plzoo-2017»		(to "plzoo-2017")
# «.levy-2017»		(to "levy-2017")
# «.menhir»		(to "menhir")
# «.omake»		(to "omake")
# «.godi»		(to "godi")





#####
#
# sml-nj
# 2000oct09
#
#####

# «sml-nj»  (to ".sml-nj")

# (find-status "sml-nj")
# (find-vldifile "sml-nj.list")
# (find-fline "/usr/doc/sml-nj/")

# «sml-nj-isabelle»  (to ".sml-nj-isabelle")
# (to "isabelle99")

# (find-isafile "etc/settings")
# (find-fline "/usr/lib/sml-nj/bin/")
# (find-angg ".zshrc" "heredoc")

# This is a quick and dirty way to provide the executable file
# "/usr/lib/sml-nj/bin/sml" that Isabelle needs. It would be cleaner
# to create a private sml directory inside Isabelle's dirs to do that,
# but that will be left for a later date.

#*
cd /usr/lib/sml-nj/bin/
heredoc sml -m 755 <<'---'
#!/bin/sh
# (find-es "ml" "isabelle99")
sml
---
#*





#####
#
# ocaml in woody
# 2002sep15
#
#####

# «ocaml»  (to ".ocaml")
# (find-status "ocaml")
# (find-status "ocaml-base")
# (find-status "ocaml-doc")
# (find-vldifile "ocaml.list")
# (find-vldifile "ocaml-base.list")
# (find-vldifile "ocaml-doc.list")
# (find-fline "/usr/doc/ocaml/")
# (find-fline "/usr/doc/ocaml-base/")
# (find-fline "/usr/doc/ocaml-doc/")

# To produce eeg-able examples from the info pages:
#*
cat > ~/tmp/ocamlinfo2eeg.tcl <<'%%%%%'
source $env(HOME)/TCL/inc.tcl      ;# (find-angg "TCL/inc.tcl")
set rest [readfile $env(HOME)/o]
if {[regexp "\n(\[.0-9\]+   \[^\n\]*)\n" $rest -> titleline]} {
  puts "# $titleline"
}
puts {cat > $EEG <<'%%%'}
while {[regexp "^(.*?)\n<<(.*?)\n>>(.*)\$" $rest -> beg code rest]} {
  set lines "\n  $code\n"
  regsub -all "\n(\[!-~\])" $lines " \\1" lines
  foreach line [split $lines "\n"] {
    if {[regexp "^  #(.*)" $line -> bulk]} {
      puts $bulk
    }
  }
  puts ""
}
puts "%%%"
puts "eeg ocaml"
%%%%%

#*

(defun ocaml-eeg-block (nodename)
  (find-node (concat "(ocaml)" nodename))
  (write-region (point-min) (point-max) "~/o")
  (Info-exit)
  (insert (format "#*\n# (find-node \"(ocaml)%s\")\n" nodename))
  (insert (shell-command-to-string "tclsh ~/tmp/ocamlinfo2eeg.tcl"))
  (insert "\n"))

;; (find-node "(ocaml)Section 1-1")
;; Now paste this to a temp buffer, run it, and have fun.

(progn
  (ocaml-eeg-block "Section 1-1")
  (ocaml-eeg-block "Section 1-2")
  (ocaml-eeg-block "Section 1-3")
  (ocaml-eeg-block "Section 1-4")
  (ocaml-eeg-block "Section 1-5")
  (ocaml-eeg-block "Section 1-6")
  (ocaml-eeg-block "Section 1-7")
  (ocaml-eeg-block "Section 1-8")
  (ocaml-eeg-block "Section 1-9"))

;; Problems:
;; 1-3: need sin and square
;; 1-8:
;;   Characters 363-370:
;;   Unbound constructor Const





#####
#
# ocaml packages in potato
# 2000jun21
#
#####

# (find-status "ocaml")
# (find-vldifile "ocaml.list")
# (find-fline "/usr/doc/ocaml/")
# (find-fline "/usr/lib/ocaml/")
# (find-fline "/usr/share/emacs/site-lisp/")

# (find-status "ocaml-doc")
# (find-vldifile "ocaml-doc.list")
# (find-fline "/usr/doc/ocaml-doc/")
# (find-fline "/usr/doc/ocaml-doc/ocaml-2.04-refman.txt.gz")
# (find-fline "/usr/doc/ocaml-doc/ocaml-2.04-refman.txt.gz" "1+2*3")

# (find-node "(ocaml)Top")

# (find-udw3 "ocaml-doc/ocaml.html/index.html")
lynx /usr/doc/ocaml-doc/ocaml.html/index.html

# (find-node "(ocaml)Section 1-1")
# (find-node "(ocaml)Section 1-2")
# (find-node "(ocaml)Section 1-3")
# (find-node "(ocaml)Section 13-10")

#*
cat > $EEG <<'---'
1+2*3;;
let pi = 4.0 *. atan 1.0;;
let square x = x *. x;;
square(sin pi) +. square(cos pi);;
1.0 * 2;;
1.0 *. 2;;
let rec fib n =
  if n < 2 then 1 else fib(n-1) + fib(n-2);;
fib 10;;
(1 < 2) = false;;
'a';;
"Hello world";;
let l = ["is"; "a"; "tale"; "told"; "etc."];;
"Life" :: l;;
let rec sort lst =
  match lst with
    [] -> []
  | head :: tail -> insert head (sort tail)
and insert elt lst =
  match lst with
    [] -> [elt]
  | head :: tail -> if elt <= head then elt :: lst else head :: insert elt tail
;;
sort l;;
sort [6;2;5;3];;
sort [3.14; 2.718];;
let deriv f dx = function x -> (f(x +. dx) -. f(x)) /. dx;;
let sin' = deriv sin 1e-6;;
sin' pi;;
let compose f g = function x -> f(g(x));;
let cos2 = compose square cos;;
List.map (function n -> n * 2 + 1) [0;1;2;3;4];;
let rec map f l =
  match l with
    [] -> []
  | hd :: tl -> f hd :: map f tl;;
---
eeg ocaml
#*

zcatinfo /usr/share/info/ocaml > /tmp/ocaml.info
cat /tmp/ocaml.info \
  | awk '
      /^>>/  { p = 0 }
      p == 1 { print }
      /^<</  { p = 1 }
    ' \
  | perl -nle ' m/^  #(.*)/ && print $1' \
  > /tmp/ocaml.exs
#*

# (find-fline "/tmp/ocaml.exs")
# (find-fline "/tmp/ocaml.info")

#*
cp /tmp/ocaml.exs $EEG
eeg ocaml
#*




#####
#
# other docs
# 2000jun23
#
#####

gv $S/http/www.cs.cmu.edu/afs/cs.cmu.edu/project/fox/mosaic/doc/FourLectures.2.ps &
gv $S/http/www.cs.cmu.edu/afs/cs.cmu.edu/project/fox/mosaic/doc/FourLectures.3.ps &

# (find-fline "$S/http/www.dcs.napier.ac.uk/a.cumming/giml.zip")

rm -Rv /tmp/giml/
mkdir  /tmp/giml/
cd     /tmp/giml/
unzip -L $S/http/www.dcs.napier.ac.uk/a.cumming/giml.zip
# (w3-open-local "/tmp/giml/manual.htm")






#####
#
# Normaliser
#
#####

cd /usr/src/
rm -Rv Normaliser-2.2/
tar -xvzf /snarf/ftp/ftp.logique.jussieu.fr/pub/distrib/raffalli/Normaliser-2.2.tar.gz
cd /usr/src/Normaliser-2.2/Src/
make |& tee om

# Depends on ocaml




#####
#
# caml-light
#
#####

# (find-sftpfile "ftp.inria.fr/lang/caml-light/")





#####
#
# ocaml-1.05
#
#####

cd /usr/src/
rm -Rv ocaml-1.05/
tar -xvzf /snarf/ftp/ftp.inria.fr/lang/caml-light/ocaml-1.05.tar.gz
cd /usr/src/ocaml-1.05/
cp -iv /home/root/config.cache .
./configure |& tee oc
make world |& tee omw

# ocamlrun asks for ld-linux.so.2 ...





#####
#
# sml-nj
#
#####

# (find-status "sml-nj")
# (find-vldifile "sml-nj.list")
# (find-fline "/usr/doc/sml-nj/")

# (find-fline "/usr/doc/sml-nj/examples/")

# slinkb2:
apt-get install sml-nj

pdsc /debian/dists/slink/main/source/devel/sml-nj_110-4.dsc



# (find-smlsfile ".files.exit")

#
dpkg --purge sml-nj
cd /usr/src/sml-nj-110/
debian/rules binary	|& tee odrb
# (find-smlsfile "odrb" "Go for it")
# (find-smlsfile "odrb" "make[1]: Leaving directory `/6usrc/sml-nj-110/src/runtime/objs")
# (find-smlsfile "odrb" "[Loading")
# (find-smlsfile "config/install.sh" "# build the run-time system")
# (find-smlsfile "config/install.sh" "# boot the base SML system")
# (find-smlsfile "config/install.sh" "<<")
# (find-node "(bash)Bash Conditional Expressions")
# (find-smlsfile "odrb")
# (find-smlsfile "src/runtime/objs/mk.x86-linux")



rm -Rv ~/SML/
mkdir ~/SML/
cp -iv /usr/doc/sml-nj/examples/calc/* ~/SML/
# (find-fline "~/SML/")
# (find-fline "~/SML/sources.cm")

cd ~/SML/
cat > sources.cm <<'---'
Group
is
cml.cm
/usr/lib/sml-nj/src/eXene/lib/sources.cm
/usr/lib/sml-nj/src/eXene/widgets/sources.cm
acc.sml
calc.sml
main.sml
---
# CM.make ();
sml-cm





find * -type f			> .files
agrep -l exit $(<.files)	|& tee .files.exit
agrep -v sml.bin .files.exit	|& tee .files.exit-
agrep exit $(<.files.exit-)	|& tee ~/o

# (find-fline "~/o")
# (find-smlsfile "src/runtime/c-libs/posix-process/cfun-list.h" "exit")

psner -nc -np -k -A htm,html -l 200 http://cm.bell-labs.com/cm/cs/what/smlnj/doc/index.html
OS.Process.exit(OS.Process.success);





# glimpse'ing sml-nj
#
cd /usr/src/sml-nj-110/
# perl -nle 'm/.*\.(.*)/ && print $1' < .files | sort | uniq |& tee ~/o
# for i in $(<~/o); do file $(grep '\.'$i'$' .files); done |& tee ~/o2

perl -nle 'm/.*\.(5|burg|c|cfg|cm|debian|doc|dot|fol|grm|h|html|info|ins|l|lex|mldoc|nw|p|pl|sc|sh|sml|template|tex|toc|y)$/ && print $_' \
  < .files > .files.toglimpse
glimpseindex -H . -F < .files.toglimpse







######
#
# hol90.10
#
######

# «hol90.10»  (to ".hol90.10")

rm -Rv /usr/src/hol90.10/
cd /usr/src/
tar -xvzf $S/http/www.ftp.cl.cam.ac.uk/ftp/hvg/hol90/hol90.10.tar.gz
cd /usr/src/hol90.10/

# (find-holfile "src/INSTALL.txt" "symbolic link")
cd /usr/src/hol90.10/bin/njsml.1xx/
rm -fv sml
ln -s /usr/bin/sml .

# (find-holfile "src/INSTALL.txt" "ML-Lex")
# (find-holfile "src/Makefiles/njsml.1xx" "LEX")
##LEX=/usr/groups/theory/njml/working/bin/ml-lex
##YAK=/usr/groups/theory/njml/working/bin/ml-yacc
#LEX=/usr/bin/ml-lex
#YAK=/usr/bin/ml-yacc

cd /usr/src/hol90.10/src/
BUILD |& tee ../ob

# Silly test:
cd /usr/src/hol90.10/bin/
echo | hol90

ln -s /usr/src/hol90.10/bin/hol90 /usr/local/bin/



# glimpse'ing HOL
#
cd /usr/src/hol90.10/
# perl -nle 'm/.*\.(.*)/ && print $1' < .files | sort | uniq |& tee ~/o
# for i in $(<~/o); do file $(grep '\.'$i'$' .files); done |& tee ~/o2

perl -nle 'm/.*\.(c|desc|doc|el|h|help|hol_lib|holsig|html|jrh|lex|lib|msg|news|release|sig|sml|stable|sty|taken|template|tex|thms|txt|yak)$/ && print $_' \
  < .files > .files.toglimpse
glimpseindex -H . -F < .files.toglimpse





######
#
# hol info
#
######

# Some HOL pages:
lynx $S/http/lal.cs.byu.edu/lal/hol-documentation.html
lynx $S/http/www.cl.cam.ac.uk/Research/HVG/FTP/FTP.html

# Automated reasoning systems:
lynx $S/http/www.cl.cam.ac.uk/users/jrh/ar.html

# (find-fline "/usr/src/hol90.10/src/INSTALL.txt")
# (find-fline "/usr/src/hol90.10/src/Makefiles/")
# (find-fline "/usr/src/hol90.10/src/Makefiles/")

lynx /usr/src/hol90.10/doc/manual.html




#####
#
# lego
# 2000oct14
#
#####

# «lego»  (to ".lego")
# (find-shttpw3 "www.dcs.ed.ac.uk/home/lego/html/release-1.3.1/official.html")

#*
rm -Rv /usr/src/lego-1.3.1/
cd /usr/src/
tar -xvzf   $S/ftp/ftp.dcs.ed.ac.uk/pub/lego/lego-1.3.1.tar.gz
patch -p0 < $S/ftp/ftp.dcs.ed.ac.uk/pub/lego/lego-1.3.1-3.patch
cd /usr/src/lego-1.3.1/

# echo 'use "build.sml";' | cml

cd /usr/src/lego-1.3.1/src/
echo 'use "build.sml";' | sml-cm

#*

# Now I'm getting the impression that all "unbound structure" errors
# that I'm getting with sml-nj programs refer to the "System"
# module...







#####
#
# Moscow ML
# 2001jan03 / 2009jul30
#
#####

# «mosml»  (to ".mosml")
# Debian package:
# http://www.diku.dk/hjemmesider/ansatte/jpsecher/debian.html
#   deb     http://www.diku.dk/~jpsecher/ sarge/
#   deb-src http://www.diku.dk/~jpsecher/ sarge/
# http://people.debian.org/~jps/

# http://www.itu.dk/people/sestoft/mosml.html
# http://www.itu.dk/people/tofte/publ/tips.pdf
# http://www.itu.dk/people/sestoft/mosml/mos201src.tar.gz
#*
rm -Rv ~/usrc/mosml/
tar -C ~/usrc/ -xvzf \
  $S/http/www.itu.dk/people/sestoft/mosml/mos201src.tar.gz
cd     ~/usrc/mosml/
cd     ~/usrc/mosml/src/
make world	                              |& tee ../omw
cd     ~/usrc/mosml/
make install MOSMLHOME=$HOME/usrc/mosml/inst  |& tee ../omi

#*
# (code-c-d "mosml" "~/usrc/mosml/")
# (find-mosmlfile "")
# (find-mosmlfile "install.txt")
# (find-mosmlfile "inst/")
# (find-mosmlfile "inst/bin/")
# (find-mosmlfile "bin/")

# (find-mosmlfile "install.txt" "MOSMLHOME")
# (find-mosmlfile "src/")
# (find-mosmlfile "src/Makefile.inc")
# Not working yet...

(defun eepitch-mosml () (interactive) (eepitch-comint "mosml" "~/usrc/mosml/inst/bin/mosml"))
* (eepitch-mosml)
* (eepitch-kill)
* (eepitch-mosml)


# Old stuff:

#*
rm -Rv /usr/src/mosml/
cd /usr/src/
tar -xvzf $S/ftp/ftp.dina.kvl.dk/pub/mosml/mos20src.tar.gz
cd /usr/src/mosml/
cd src
make world	|& tee ../omw
make install MOSMLHOME=/usr/src/mosml/inst	|& tee ../omi
(cd ../inst/; find * | sort > ../of)

#*
# (find-fline "/usr/src/mosml/")
# (find-fline "/usr/src/mosml/install.txt")
# (find-fline "/usr/src/mosml/install.txt" "(S5)")
# (find-fline "/usr/src/mosml/src/")
# (find-fline "/usr/src/mosml/src/Makefile.inc")

# (find-fline "/usr/src/mosml/install.txt" "(B4*)")

#*
# Dynamic linking is not working.
# (find-fline "/usr/src/mosml/install.txt" "(B6*) To check that dynamic")

cat > $EEG <<'---'
fun myload u =
    (load u; print ("\nLoaded " ^ u ^ "\n")) handle Fail _ => ();
app myload ["Gdbm", "Mysql", "Postgres", "Regex", "Socket", "Unix"];
---
cd /usr/src/mosml/inst/bin/
LD_LIBRARY_PATH=${HOME}/mosml/lib \
  eeg mosml
#*







#####
#
# hol98 ("taupo")
# 2001feb01
#
#####

# «hol98»  (to ".hol98")
#*
rm -Rv /usr/src/hol98/
cd /usr/src/
tar -xvzf $S/http/www.cl.cam.ac.uk/ftp/hvg/hol98/taupo-5.tar.gz
cd /usr/src/hol98/

# (find-hol98file "install.txt" "(1)")
# (find-hol98file "tools/configure.sml")

patch tools/configure.sml <<'%%%'
16,17c16,17
< val mosmldir =
< val holdir   =
---
> val mosmldir = "/usr/src/mosml/inst";
> val holdir   = "/usr/src/hol98";
22c22
< val GNUMAKE  = "gnumake"; (* for bdd library and SMV                       *)
---
> val GNUMAKE  = "make";    (* for bdd library and SMV                       *)
%%%

#*
# (find-hol98file "install.txt" "D. Perform")
cd /usr/src/hol98/tools/

rm -Rv ~/mosml
 #/usr/src/mosml/inst/bin/mosml < configure.sml		|& tee omc0
ln -s /usr/src/mosml/inst ~/mosml

/usr/src/mosml/inst/bin/mosml < configure.sml		|& tee omc
/usr/src/hol98/bin/build				|& tee ob

#*


# (find-hol98file "tools/")


# (code-c-d "hol98" "/usr/src/hol98/")
# (find-hol98file "")
# (find-hol98file "install.txt")
# (find-hol98file "tools/")
# (find-hol98file "tools/configure.sml")
# (find-fline "/usr/src/mosml/inst/")

# (find-hol98file "tools/")
# (find-hol98file "tools/hol98-mode.el")

# (find-shttpfile "www.cl.cam.ac.uk/users/mn200/hol-tutorial/")

#*
# (find-shttpw3 "www.cl.cam.ac.uk/users/mn200/hol-tutorial/tutorial004.html")
cd /usr/src/hol98/bin/
cat > $EEG <<'---'
1 :: [2,3,4,5];
val l = it;
tl l;
hd it;
tl(tl(tl(tl(tl l))));
val l1 = [1,2,3] and l2 = ["a","b","c"];
explode "a b c";
val triple1 = (1,true,"abc");
#2 triple1;
val triple2 = (1, (true, "abc"));
#2 triple2;
fun zip(l1,l2) =
  if null l1 orelse null l2 then []
  else (hd l1,hd l2) :: zip(tl l1,tl l2);
zip([1,2,3],["a","b","c"]);
fun curried_zip l1 l2 = zip(l1,l2);
fun zip_num l2 = curried_zip [0,1,2] l2;
zip_num ["a","b","c"];
3 div 0;
3 div 0 handle _ => 0;
quit();
---
eeg hol

#*
# (find-shttpw3 "www.cl.cam.ac.uk/users/mn200/hol-tutorial/tutorial005.html")
cd /usr/src/hol98/bin/
cat > $EEG <<'---'
load "arithmeticTheory";
load "pairTheory";
``x /\ y ==> z``;
dest_imp it;
dest_conj(#1 it);
``(1,2)``;
type_of it;
(``1``, ``2``);
type_of(#1 it);
``(1,T)``;
type_of it;
val x = mk_var("x", ``:bool``)
  and y = mk_var("y", ``:bool``)
  and z = mk_var("z", ``:bool``);
val t = mk_imp(mk_conj(x,y),z);
``~x``;
``x``;
type_of it;
``(x,y)``;
type_of it;
type_of ``$==>``;
type_of ``$+``;
``(x + 1, t1 ==> t2)``;
type_of it;
(``x=1``, ``t1==>t2``);
(type_of (#1 it), type_of (#2 it));
``1 2``;
``~1``;
``$==> t1 t2``;
``$/\ t1 t2``;
``\x. x + 1``;
type_of it;
``\x y. (x, y * x)``;
type_of it;
``!x y. x <= x + y``;
dest_conj ``p ==> q``;
dest_conj ``p ==> q`` handle e => Raise e;
quit();

---
eeg hol.unquote

#*

# (find-shttpfile "www.cl.cam.ac.uk/users/mn200/hol-tutorial/")








######
#
# TkHol
#
######

cd /usr/src/
rm -Rv TkHol.0.3c/
tar -xvzf $S/ftp/ftp.cl.cam.ac.uk/hvg/contrib/TkHol/TkHol.0.3c.WithoutTclTkExpect.tar.gz
cd /usr/src/TkHol.0.3c/

patch tksml/configure <<'---'
113a114,116
> #Edrx
> if false; then
> 
181a185,187
> 
> #Edrx
> fi
---
# (find-tkholfile "tksml/configure" "Edrx")

# (find-fline "~/TCL/patchTkHol")
~/TCL/patchTkHol $(find * | grep Make) |& tee op

cd /usr/src/TkHol.0.3c/
EXPECTK=/usr/bin/expectk5.28 HOL90_ROOT_DIR=/usr/src/hol90.10 \
  ./configure |& tee oc

# (find-tkholfile "oc")
# (find-tkholfile "configure" "hol90 root installation directory")

make |& tee om
# (find-tkholfile "om" "Error")
# (find-tkholfile "hol90/holplus/")
# (find-tkholfile "hol90/holplus/holplus_lib.sml")

# (find-holfile "src/portableML/njsml.1xx.sml" "fun open_out")

smlglimpse -w IO
smlglimpse open_out








# (find-sftpfile "ftp.cl.cam.ac.uk/hvg/contrib/TkHol/")

# (find-tkholfile "")
# (find-node "(bash)Bash Conditional Expressions")

cd /usr/src/TkHol.0.3c/
cd doc/Tutorial/
make tutorial.ps |& tee om
cd /usr/src/TkHol.0.3c/
cd doc/paper1/
make paper.dvi |& tee om




#####
#
# ocaml on etch
# 2008feb18
#
#####

# «ocaml-etch»  (to ".ocaml-etch")
# (find-zsh "availabledebs | sort | grep ocaml")

apti ocaml ocaml-base-nox ocaml-base ocaml-doc ocaml-nox
apti coq coq-doc

# (find-status   "ocaml")
# (find-vldifile "ocaml.list")
# (find-udfile   "ocaml/")
# (find-status   "ocaml-base-nox")
# (find-vldifile "ocaml-base-nox.list")
# (find-udfile   "ocaml-base-nox/")
# (find-status   "ocaml-base")
# (find-vldifile "ocaml-base.list")
# (find-udfile   "ocaml-base/")
# (find-status   "ocaml-doc")
# (find-vldifile "ocaml-doc.list")
# (find-udfile   "ocaml-doc/")
# (find-status   "ocaml-nox")
# (find-vldifile "ocaml-nox.list")
# (find-udfile   "ocaml-nox/")

# (find-man "1 ocamlrun")

# (find-node "(ocaml)Top")
# (find-node "(ocaml)Chapter 9")
# (find-node "(ocaml)Chapter 9" "toplevel system")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
ocaml
1+2;;




#####
#
# ocaml (from the debian sources)
# 2008aug03
#
#####

# «ocaml-deb-src»  (to ".ocaml-deb-src")
# http://ftp.debian.org/debian/pool/main/o/ocaml/
# http://ftp.debian.org/debian/pool/main/o/ocaml/ocaml_3.10.2-3.dsc
# http://ftp.debian.org/debian/pool/main/o/ocaml/ocaml_3.10.2-3.diff.gz
# http://ftp.debian.org/debian/pool/main/o/ocaml/ocaml_3.10.2.orig.tar.gz
#*
sudo apt-get build-dep ocaml

#*
rm -Rv ~/usrc/ocaml/
mkdir  ~/usrc/ocaml/
cd $S/http/ftp.debian.org/debian/pool/main/o/ocaml/
cp -v ocaml_3.10.2* ~/usrc/ocaml/
cd     ~/usrc/ocaml/
dpkg-source -sn -x ocaml_3.10.2-3.dsc
cd     ~/usrc/ocaml/ocaml-3.10.2/
dpkg-buildpackage -us -uc -b -rfakeroot     |& tee odb

#*
# (find-fline "~/usrc/ocaml/")
* (eepitch-shell)
cd ~/usrc/ocaml/
sudo dpkg -i *.deb

#*
# (code-c-d "ocaml" "~/usrc/ocaml/ocaml-3.10.2/")
# (find-ocamlfile "")
# (find-ocamlfile "debian/control" "Package: camlp4")



#####
#
# camlp5 (from the debian sources)
# 2008aug03
#
#####

# «camlp5-deb-src»  (to ".camlp5-deb-src")
# http://ftp.debian.org/debian/pool/main/c/camlp5/
# http://ftp.debian.org/debian/pool/main/c/camlp5/camlp5_5.08-2.dsc
# http://ftp.debian.org/debian/pool/main/c/camlp5/camlp5_5.08-2.diff.gz
# http://ftp.debian.org/debian/pool/main/c/camlp5/camlp5_5.08.orig.tar.gz
#*
rm -Rv ~/usrc/camlp5/
mkdir  ~/usrc/camlp5/
cd $S/http/ftp.debian.org/debian/pool/main/c/camlp5/
cp -v camlp5_5.08* ~/usrc/camlp5/
cd     ~/usrc/camlp5/
dpkg-source -sn -x camlp5_5.08-2.dsc
cd     ~/usrc/camlp5/camlp5-5.08/
dpkg-buildpackage -us -uc -b -rfakeroot     |& tee odb

#*
# (find-fline "~/usrc/camlp5/")
* (eepitch-shell)
cd ~/usrc/camlp5/
sudo dpkg -i *.deb

#*
# (code-c-d "camlp5" "~/usrc/camlp5/camlp5-5.08/")
# (find-camlp5file "")




#####
#
# camlp5
# 2009aug04
#
#####

# «camlp5»  (to ".camlp5")
# (find-status   "camlp5")
# (find-vldifile "camlp5.list")
# (find-udfile   "camlp5/")





#####
#
# sml-nj on etch (from the debian sources)
# 2008jun02
#
#####

# «sml-nj-etch»  (to ".sml-nj-etch")
# http://ftp.debian.org/debian/pool/main/s/smlnj/
# http://ftp.debian.org/debian/pool/main/s/smlnj/smlnj_110.65-1.dsc
# http://ftp.debian.org/debian/pool/main/s/smlnj/smlnj_110.65-1.diff.gz
# http://ftp.debian.org/debian/pool/main/s/smlnj/smlnj_110.65.orig.tar.gz
#*
rm -Rv ~/usrc/smlnj/
mkdir  ~/usrc/smlnj/
cd $S/http/ftp.debian.org/debian/pool/main/s/smlnj/
cp -v smlnj_110.65* ~/usrc/smlnj/
cd     ~/usrc/smlnj/
dpkg-source -sn -x smlnj_110.65-1.dsc
cd     ~/usrc/smlnj/smlnj-110.65/
#  dpkg-buildpackage -us -uc -b -rfakeroot     |& tee odb
dpkg-buildpackage -d -us -uc -b -rfakeroot     |& tee odb

# dpkg-checkbuilddeps: Unmet build dependencies: texlive-latex-base
#     texlive-pictures texlive-math-extra texlive-latex-recommended
# dpkg-buildpackage: Build dependencies/conflicts unsatisfied; aborting.
# dpkg-buildpackage: (Use -d flag to override.)
# (find-man "dpkg-buildpackage" "Do not check build dependencies")

#*
cd ~/usrc/smlnj/smlnj-110.65/
cd ~/usrc/smlnj/smlnj-110.65/base/cm/Doc/
   latex btcomp.tex && latex btcomp.tex && latex btcomp.tex
pdflatex btcomp.tex
   latex manual.tex && latex manual.tex && latex manual.tex
pdflatex manual.tex

#*
# (find-fline "~/usrc/smlnj/")
* (eepitch-shell)
cd ~/usrc/smlnj/
sudo dpkg -i *.deb

#*
# (code-c-d "smlnj" "~/usrc/smlnj/smlnj-110.65/")
# (find-smlnjfile "")
# (find-smlnjfile "base/cm/Doc/")
# (find-smlnjsh "find * | sort")
# (find-smlnjsh "find * | sort | grep 'tex$'")

# (find-status   "smlnj")
# (find-vldifile "smlnj.list")
# (find-udfile   "smlnj/")
# (find-udfile "smlnj/Doc/manual.tex")

# http://www.smlnj.org/
# http://www.smlnj.org/doc/literature.html#tutorials
# http://www.smlnj.org/doc/interact.html
# http://www.cs.cmu.edu/~rwh/smlbook/offline.pdf
# http://www.cs.cmu.edu/~rwh/smlbook/examples/
# http://www.itu.dk/people/sestoft/mosml.html
# http://www.itu.dk/people/tofte/publ/tips.pdf
# http://www.itu.dk/people/sestoft/mosmllib/index.html

# (find-status   "sml-mode")
# (find-vldifile "sml-mode.list")
# (find-udfile   "sml-mode/")




#####
#
# OCaml modes for Emacs
# 2009jul29
#
#####

# «ocaml-mode»  (to ".ocaml-mode")
# http://www.emacswiki.org/emacs/ObjectiveCaml
# http://www.emacswiki.org/emacs/CamlMode
# http://www.emacswiki.org/emacs/TuaregMode
# (find-status   "ocaml-mode")
# (find-vldifile "ocaml-mode.list")
# (find-udfile   "ocaml-mode/")

# (load "/usr/share/emacs/22.2/lisp/obsolete/hilit19.el.gz")
# (find-coqfile "")

# http://www-rocq.inria.fr/~acohen/tuareg/mode/tuareg-mode-1.45.7.tar.gz
# http://aspellfr.free.fr/tuareg-imenu/tuareg-imenu.el
#*
rm -Rv ~/usrc/tuareg-mode-1.45.7/
tar -C ~/usrc/ -xvzf \
  $S/http/www-rocq.inria.fr/~acohen/tuareg/mode/tuareg-mode-1.45.7.tar.gz
cd     ~/usrc/tuareg-mode-1.45.7/
cp -v $S/http/aspellfr.free.fr/tuareg-imenu/tuareg-imenu.el .

#*
# (code-c-d "tuaregmode" "~/usrc/tuareg-mode-1.45.7/")
# (find-tuaregmodefile "")
# (find-coqfile "lib/")
# (find-levyfile "")
# (find-levyfile "interpret.ml")

(progn
  ;; (add-to-list 'load-path "~/.elisp/tuareg-mode")
  (add-to-list 'load-path "~/usrc/tuareg-mode-1.45.7/")
  (autoload 'tuareg-mode "tuareg" "Major mode for editing Caml code" t)
  (autoload 'camldebug "camldebug" "Run the Caml debugger" t)
  (autoload 'tuareg-imenu-set-imenu "tuareg-imenu" 
    "Configuration of imenu for tuareg" t) 
  ;;
  (add-hook 'tuareg-mode-hook 'tuareg-imenu-set-imenu)
  ;;
  (setq auto-mode-alist 
        (append '(("\\.ml[ily]?$" . tuareg-mode)
	          ("\\.topml$" . tuareg-mode))
		auto-mode-alist))
  ;;
  )





#####
#
# Twelf
# 2009aug05
#
#####

# «twelf»  (to ".twelf")
# http://twelf.plparty.org/wiki/Main_Page
# http://twelf.plparty.org/wiki/Download
# (find-status   "mlton")
# (find-vldifile "mlton.list")
# (find-udfile   "mlton/")
# (find-angg ".emacs.papers" "institutions")
# http://kwarc.eecs.iu-bremen.de/frabe/
# http://kwarc.eecs.iu-bremen.de/frabe/Research/cht/index.html




#####
#
# OCaml on Lenny
# 2010jul21
#
#####

# «ocaml-lenny»  (to ".ocaml-lenny")
# (find-angg ".emacs" "ocaml")
# (find-zsh "dmissing ocaml")
# (find-zsh "dmissing ocaml | grep info")
# (find-zsh "dmissing ocaml | grep examp")
# (find-zsh "installeddebs | sort | grep ocaml")
# (find-zsh "availabledebs | sort | grep ocaml")

# (find-status   "ocaml-base-nox")
# (find-vldifile "ocaml-base-nox.list")
# (find-udfile   "ocaml-base-nox/")
# (find-status   "ocaml-base")
# (find-vldifile "ocaml-base.list")
# (find-udfile   "ocaml-base/")
# (find-status   "ocaml-doc")
# (find-vldifile "ocaml-doc.list")
# (find-udfile   "ocaml-doc/")
# (find-status   "ocaml-interp")
# (find-vldifile "ocaml-interp.list")
# (find-udfile   "ocaml-interp/")
# (find-status   "ocaml-nox")
# (find-vldifile "ocaml-nox.list")
# (find-udfile   "ocaml-nox/")
# (find-status   "ocaml")
# (find-vldifile "ocaml.list")
# (find-udfile   "ocaml/")
# (find-fline "/usr/lib/ocaml/3.10.2/")

# (find-man "1 ocaml")
# (find-man "1 ocamlc")
# (find-man "1 ocamlrun")

* (eepitch-ocaml)
* (eepitch-kill)
* (eepitch-ocaml)
1+2;;
(+);;
(+) 1 2;;
(* this is a comment
   this too
*)
1+2;;


# (find-ocamlnode "Section 1-4" "Records and variants")
# (find-ocamlnode "Section 1-7" "Symbolic processing of expressions")
# (find-ocamlnode "Chapter 9"   "The toplevel system (ocaml)")
# (find-ocamlnode "Section 9-5" "Building custom toplevel systems: ocamlmktop")
# (find-ocamlnode "Chapter 12"   "Lexer and parser generators")
# (find-ocamlnode "Section 12-6" "A complete example")
# (find-ocamlnode "Chapter 16"    "The debugger (ocamldebug)")
# (find-ocamlnode "Section 16-10" "Running the debugger under Emacs")
# (find-ocamlnode "Chapter 30" "Index to the library")
# (find-ocamlnode "Chapter 31" "Index of keywords")

* (eepitch-ocaml)
* (eepitch-kill)
* (eepitch-ocaml)
type expression =
    Const of float
  | Var of string
  | Sum of expression * expression    (* e1 + e2 *)
  | Diff of expression * expression   (* e1 - e2 *)
  | Prod of expression * expression   (* e1 * e2 *)
  | Quot of expression * expression   (* e1 / e2 *)
;;
exception Unbound_variable of string;;
let rec eval env exp =
  match exp with
    Const c -> c
  | Var v ->
      (try List.assoc v env with Not_found -> raise(Unbound_variable v))
  | Sum(f, g) -> eval env f +. eval env g
  | Diff(f, g) -> eval env f -. eval env g
  | Prod(f, g) -> eval env f *. eval env g
  | Quot(f, g) -> eval env f /. eval env g;;
eval [("x", 1.0); ("y", 3.14)] (Prod(Sum(Var "x", Const 2.0), Var "y"));;
let rec deriv exp dv =
  match exp with
    Const c -> Const 0.0
  | Var v -> if v = dv then Const 1.0 else Const 0.0
  | Sum(f, g) -> Sum(deriv f dv, deriv g dv)
  | Diff(f, g) -> Diff(deriv f dv, deriv g dv)
  | Prod(f, g) -> Sum(Prod(f, deriv g dv), Prod(deriv f dv, g))
  | Quot(f, g) -> Quot(Diff(Prod(deriv f dv, g), Prod(f, deriv g dv)),
                       Prod(g, g))
;;
deriv (Quot(Const 1.0, Var "x")) "x";;





# Peter Sestoft: "ML pattern match compilation and partial evaluation"
# http://www.itu.dk/~sestoft/papers/match.ps.gz




#####
#
# labltk
# 2010jul21
#
#####

# «labltk»  (to ".labltk")
# (find-zsh "dmissing labltk")
# (find-fline "/usr/bin/labltk")
# (find-fline "/usr/lib/ocaml/3.10.2/labltk/")
# (find-fline "/usr/share/doc/ocaml/README.labltk/README.gz")
# (find-fline "/usr/share/doc/ocaml/examples_labltk/")
# (find-node "(ocaml)Chapter 28")

* (eepitch-labltk)
* (eepitch-kill)
* (eepitch-labltk)



#####
#
# Levy
# 2011jul18
#
#####

# «plzoo»  (to ".plzoo")
# «levy»  (to ".levy")
# (find-angg ".emacs.papers" "levy")
# (find-es "lexyacc" "precedence")
# (find-angg ".emacs" "plzoo")
# (find-angg "OCAML/tree.ml")
# http://andrej.com/plzoo/
# http://andrej.com/plzoo/src/levy.zip
# http://andrej.com/plzoo/html/levy.html
# http://lambda-the-ultimate.org/node/4314
# http://math.andrej.com/
# http://lambda-the-ultimate.org/node/4471 What does focusing tell us about language design?
# http://requestforlogic.blogspot.com/2011/08/embracing-and-extending-levy-language.html
# http://lambda-the-ultimate.org/node/1975 Call by push-value
# http://lambda-the-ultimate.org/node/4314 Levy: a Toy Call-by-Push-Value Language

# (find-ocamlnode "Section 1-4" "type ratio =")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
rm -Rv   ~/usrc/levy/
unzip -d ~/usrc/ $S/http/andrej.com/plzoo/src/levy.zip
cd       ~/usrc/levy/
make |& tee om
./levy.byte



(code-c-d "levy" "~/usrc/levy/")
(defun eepitch-levy () (interactive)
  (ee-eepitch-comint "~/usrc/levy/" "levy" "levy.byte"))

# (find-levyfile "")
# (find-levyfile "README.txt")
# (find-levyfile "lexer.mll")
# (find-levyfile "lexer.mll" "'#'")
# (find-levyfile "parser.mly")
# (find-levyfile "syntax.ml")
# (find-ocamlnode "Chapter 12" "Lexer and parser generators")
# (find-ocamlnode "Section 12-2" "Syntax of lexer definitions")
# (find-ocamlnode "Section 12-4" "Syntax of grammar definitions")
# (find-levyfile "example.levy")

* (eepitch-levy)
* (eepitch-kill)
* (eepitch-levy)

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
  cd ~/usrc/levy/
  ./levy.byte
$use "example.levy"
2 + 2 ;;
2 * 3
2 * 3 # foo




#####
#
# PolyML
# 2011nov12
#
#####

# «polyml»  (to ".polyml")
# (find-es "isabelle" "polyml")
# (find-status   "polyml")
# (find-vldifile "polyml.list")
# (find-udfile   "polyml/")
# (find-man "1 poly")
# (find-man "1 polyimport")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
poly

(defun eepitch-polyml () (interactive)
  (eepitch-comint "polyml" "poly"))

* (eepitch-polyml)
* (eepitch-kill)
* (eepitch-polyml)



#####
#
# plzoo 2017
# 2017jul04
#
#####

# «plzoo-2017» (to ".plzoo-2017")
# https://github.com/andrejbauer/plzoo/archive/master.zip
# http://andrej.com/plzoo/
# http://plzoo.andrej.com/
# http://plzoo.andrej.com/install.html

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
rm -Rv ~/usrc/plzoo-master/
unzip -d ~/usrc/ $S/https/github.com/andrejbauer/plzoo/archive/master.zip
cd     ~/usrc/plzoo-master/
# make all |& tee oma

make calc         |& tee omcalc
make calc_var     |& tee omcalc_var
make levy         |& tee omlevy
make minihaskell  |& tee omminihaskell
make miniml       |& tee omminiml
make miniml_error |& tee omminiml_error
make miniprolog   |& tee omminiprolog
make poly         |& tee ompoly
make sub          |& tee omsub

# These ones don't compile:
make boa          |& tee omboa
make lambda       |& tee omlambda

# «levy-2017» (to ".levy-2017")
# (code-c-d "levy" "~/usrc/plzoo-master/src/levy/")
# (find-levyfile "")
# (defun eepitch-levy () (interactive) (eepitch-comint "levy" "~/usrc/plzoo-master/levy.native"))

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
  cd ~/usrc/plzoo-master/src/levy/
  ~/usrc/plzoo-master/levy.native
$use "example.levy"


* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
  cd ~/usrc/levy/
  ./levy.byte
$use "example.levy"
2 + 2 ;;
2 * 3
2 * 3 # foo


* (eepitch-levy)
* (eepitch-kill)
* (eepitch-levy)






# + /usr/bin/ocamlc -c -I src/lambda -I src -o src/lambda/print.cmo src/lambda/print.ml
# File "src/lambda/print.ml", line 9, characters 2-22:
# Error: Unbound value Format.pp_print_list
# Did you mean pp_print_int?
# Command exited with code 2.
# make: *** [lambda] Error 10

# (code-c-d "plzoo" "~/usrc/plzoo-master/")
# (find-plzoofile "")
# (find-plzoofile ".dir-locals.el")
# (find-plzoofile "src/")
# (find-plzoofile "src/minihaskell/")
# (find-plzoofile "src/minihaskell/example.minihaskell")
# (find-plzoofile "src/minihaskell/example.minihaskell" "infinite list of primes")
# (find-plzoofile "src/minihaskell/README.markdown")






#####
#
# menhir
# 2017jul04
#
#####

# «menhir» (to ".menhir")
# (find-status   "menhir")
# (find-vldifile "menhir.list")
# (find-udfile   "menhir/")





#####
#
# omake
# 2012apr12
#
#####

# «omake»  (to ".omake")
# (find-status   "omake")
# (find-vldifile "omake.list")
# (find-udfile   "omake/")
# (find-status   "omake-doc")
# (find-vldifile "omake-doc.list")
# (find-udfile   "omake-doc/")




#####
#
# godi
# 2012apr12
#
#####

# «godi»  (to ".godi")
# (find-angg "bin/withgodi")
# (find-angg ".emacs" "ocaml")
# http://godi.camlcity.org/godi/index.html
# http://godi.camlcity.org/godi/get_godi.html
# http://download.camlcity.org/download/godi-rocketboost-20110811.tar.gz
#*
rm -Rfv ~/usrc/godi/
rm -Rv  ~/usrc/godi-rocketboost-20110811/
tar -C  ~/usrc/ -xvzf \
  $S/http/download.camlcity.org/download/godi-rocketboost-20110811.tar.gz
cd      ~/usrc/godi-rocketboost-20110811/

./bootstrap
/home/edrx/usrc/godi
3.12

#*
# (code-c-d "godib" "~/usrc/godi-rocketboost-20110811/")
# (code-c-d "godi"  "~/usrc/godi/")
# (find-godibfile "")
# (find-godifile  "")
# (find-godibfile "bootstrap.log")

* (eepitch-shell2)
* (eepitch-kill)
* (eepitch-shell2)
sudo apt-get -t squeeze-backports install ocaml

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)

===> Creating sample godi.conf
===> Creating godi_confdir
===> Creating file tree
===> Creating boot console
===> Installing boot console
===> Installing boot-time make framework
===> End of stage1
===> Bootstrap stage 2 running
===> Updating list of installable packages
===> Starting with conf-pcre
===> Successful with conf-pcre
===> Starting with godi-tools
===> Bootstrap successful

All GODI bootstrap stages have been successfully completed.

A very minimum set of packages has been installed.
You can now start the tool godi_console to build further
packages. This tool has a curses-based user interface, and
is self-explanatory (type 'h' to get the help screen).

To get at least the libraries coming with the official
O'Caml distribution, just install godi-ocaml-all.

Please remember to add 
    /home/edrx/usrc/godi/bin
and
    /home/edrx/usrc/godi/sbin
to your PATH environment variable.
If necessary, please remember to add 
    /home/edrx/usrc/godi/man
to your MANPATH environment variable.

Thank you for using GODI.





#####
#
# Ocsigen
# 2012oct28
#
#####

# <




http://www.cduce.org/




Enhances: mlton, mosml, sml-nj

# (find-available "libcf-ocaml")



http://ocaml.janestreet.com/






#  Local Variables:
#  coding:               raw-text-unix
#  ee-delimiter-hash:    "\n#*\n"
#  ee-delimiter-percent: "\n%*\n"
#  ee-anchor-format:     "«%s»"
#  End: