Warning: this is an htmlized version!
The original is here, 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. # An introduction to eev can be found here: # # (find-eev-quick-intro) # http://angg.twu.net/eev-intros/find-eev-quick-intro.html # # 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") # «.sml-mode» (to "sml-mode") # «.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") # «.plzoo-pp_print_list» (to "plzoo-pp_print_list") # «.plzoo-git» (to "plzoo-git") # «.omake» (to "omake") # «.godi» (to "godi") # «.sml-2021» (to "sml-2021") ##### # # 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 ##### # # sml-mode # 2021dec08 # ##### # «sml-mode» (to ".sml-mode") # (find-epackage-links 'sml-mode "smlmode" t) # (find-epackage 'sml-mode) # (code-c-d "smlmode" "~/.emacs.d/elpa/sml-mode-6.10/") # (find-smlmodefile "") # Old: # (find-status "sml-mode") # (find-vldifile "sml-mode.list") # (find-udfile "sml-mode/") ##### # # OCaml modes for Emacs # 2009jul29 / 2019sep21 # ##### # «ocaml-mode» (to ".ocaml-mode") # (find-es "ocaml" "tuareg-git") # http://www.emacswiki.org/emacs/ObjectiveCaml # http://www.emacswiki.org/emacs/CamlMode # http://www.emacswiki.org/emacs/TuaregMode # https://github.com/ocaml/tuareg # (find-zsh "installeddebs | sort | grep ocaml-mode") # (find-zsh "availabledebs | sort | grep ocaml-mode") # (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 / 2021dec08 # 2011nov12 # ##### # «polyml» (to ".polyml") # https://en.wikipedia.org/wiki/Standard_ML#Implementations # (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://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 # File "src/boa/eval.ml", line 75, characters 4-24: # Error: Unbound value Format.pp_print_list # Did you mean pp_print_int? # File "src/lambda/print.ml", line 9, characters 2-22: # Error: Unbound value Format.pp_print_list # Did you mean pp_print_int? # «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")) # (find-fline "~/usrc/plzoo-master/") # (find-fline "~/usrc/plzoo-master/src/levy/") * (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") ##### # # plzoo: the "Unbound value Format.pp_print_list" error # 2018abr17 # ##### # «plzoo-pp_print_list» (to ".plzoo-pp_print_list") # https://github.com/andrejbauer/plzoo/issues/18 # https://github.com/andrejbauer/plzoo/issues When I try to compile plzoo in OCaml 4.01.0 - the version that comes with several versions of Debian - I get these errors on boa and lambda: File "src/boa/eval.ml", line 75, characters 4-24: Error: Unbound value Format.pp_print_list Did you mean pp_print_int? File "src/lambda/print.ml", line 9, characters 2-22: Error: Unbound value Format.pp_print_list Did you mean pp_print_int? Here is my compilation script - note that I've adapted it to compile each language separately so that at least some of them would work. I set the environment variable S to ~/snarf (long story!) but S=/tmp should work too. mkdir -p $S/https/github.com/andrejbauer/plzoo/archive/ cd $S/https/github.com/andrejbauer/plzoo/archive/ rm -fv $S/https/github.com/andrejbauer/plzoo/archive/master.zip wget https://github.com/andrejbauer/plzoo/archive/master.zip rm -Rv ~/usrc/plzoo-master/ mkdir -p ~/usrc/ unzip -d ~/usrc/ $S/https/github.com/andrejbauer/plzoo/archive/master.zip cd ~/usrc/plzoo-master/ make calc make calc_var make levy make minihaskell make miniml make miniml_error make miniprolog make poly make sub # These ones don't compile: make boa make lambda ##### # # plzoo-git # 2019aug29 # ##### # «plzoo-git» (to ".plzoo-git") # (find-es "ocaml" "plzoo-git") ##### # # 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. ##### # # sml-2021 # 2021dec08 # ##### # «sml-2021» (to ".sml-2021") # (find-status "smlnj-doc") # (find-vldifile "smlnj-doc.list") # (find-udfile "smlnj-doc/") # (find-status "smlnj-runtime") # (find-vldifile "smlnj-runtime.list") # (find-udfile "smlnj-runtime/") # (find-status "smlnj") # (find-vldifile "smlnj.list") # (find-udfile "smlnj/") • (eepitch-shell) • (eepitch-kill) • (eepitch-shell) apti smlnj smlnj-doc ##### # # Ocsigen # 2012oct28 # ##### # < http://www.cduce.org/ Enhances: mlton, mosml, sml-nj # (find-available "libcf-ocaml") http://ocaml.janestreet.com/ https://news.ycombinator.com/item?id=31055564 Standard ML Family (smlfamily.github.io) *** https://smlfamily.github.io/ https://smlfamily.github.io/sml90-defn.pdf https://github.com/SMLFamily/The-Definition-of-Standard-ML https://www.ps.uni-saarland.de/alice/ https://news.ycombinator.com/item?id=36080172 Programming in Standard ML (2011) [pdf] (cmu.edu) http://mlton.org/Printf # Local Variables: # coding: utf-8-unix # End: