User Tools

Site Tools


using_ecl_embeddable_common-lisp_on_sdf

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
using_ecl_embeddable_common-lisp_on_sdf [2021/03/11 05:21] – [Customizations] hc9using_ecl_embeddable_common-lisp_on_sdf [2021/03/12 18:34] (current) – [References:] hc9
Line 15: Line 15:
 By default ECL starts up in interactive mode. Log into SDF host //miku// and type "'ecl'"; you should see something like below: By default ECL starts up in interactive mode. Log into SDF host //miku// and type "'ecl'"; you should see something like below:
  
-  ECL (Embeddable Common-Lisp) 11.1.1 +<code> 
-  Copyright (C) 1984 Taiichi Yuasa and Masami Hagiya + 
-  Copyright (C) 1993 Giuseppe Attardi +ECL (Embeddable Common-Lisp) 11.1.1 
-  Copyright (C) 2000 Juan J. Garcia-Ripoll +Copyright (C) 1984 Taiichi Yuasa and Masami Hagiya 
-  ECL is free software, and you are welcome to redistribute it +Copyright (C) 1993 Giuseppe Attardi 
-  under certain conditions; see file 'Copyright' for details. +Copyright (C) 2000 Juan J. Garcia-Ripoll 
-  Type :h for Help. +ECL is free software, and you are welcome to redistribute it 
-  Top level. +under certain conditions; see file 'Copyright' for details. 
-  >+Type :h for Help. 
 +Top level. 
 +
 + 
 +</code>
  
 The default ECL prompt is ">". Enter Common-Lisp commands in the usual way: The default ECL prompt is ">". Enter Common-Lisp commands in the usual way:
  
-  (+ 1 2 3) +<code>
-  6+
  
-  > (* 4 5+> (+ 1 2 3
-  20+6
  
-  > (format t "hello SDF~&amp;"+> (* 4 5) 
-  hello SDF +20 
-  NIL + 
-  >+> (format t "hello SDF~&amp;"
 +hello SDF 
 +NIL 
 +
 + 
 +</code>
  
 In-line help is available ; type :h for options. The debugger can be entered using "(break)" ; once entered typed :h to see options. To exit the ECL interactive session type ":exit" . In-line help is available ; type :h for options. The debugger can be entered using "(break)" ; once entered typed :h to see options. To exit the ECL interactive session type ":exit" .
Line 46: Line 54:
 ex: hello.lsp ex: hello.lsp
  
-  % echo '(format t "~&amp;Hello SDF~&amp;")' hello.lsp+<code>
  
-  % ecl -norc -script hello.lsp +% echo '(format t "~&amp;Hello SDF~&amp;")' > hello.lsp 
-  Hello SDF+ 
 +% ecl -norc -script hello.lsp 
 +Hello SDF 
 + 
 +</code>
  
 It's also possible to use ECL to execute simple Common-Lisp one-liners at the command line (note that //princ// is needed for screen output): It's also possible to use ECL to execute simple Common-Lisp one-liners at the command line (note that //princ// is needed for screen output):
  
-  % ecl -norc -shell /dev/null -eval "(princ (* 1 2 3))" +<code> 
-  6+ 
 +% ecl -norc -shell /dev/null -eval "(princ (* 1 2 3))" 
 +6 
 + 
 +</code>
  
 A nicer way to accomplish the same is to create a small shell script: A nicer way to accomplish the same is to create a small shell script:
  
-  #!/bin/sh +<code>
-  # lispit - executes a lisp expression and dumps it to stdout+
  
-  LSP_EXPR=${@}+#!/bin/sh 
 +# lispit - executes a lisp expression and dumps it to stdout
  
-  if [ "$#" -eq 0 ]; then +LSP_EXPR=${@}
-          echo "lispit - executes a lisp expression" +
-          echo "  usage: lispit '(lisp_expression)'" +
-          echo "" +
-          exit 1 +
-  fi+
  
-  ecl -norc -shell /dev/null -eval "(princ ${LSP_EXPR} )" +if [ "$#" -eq 0 ]; then 
-  echo "" +        echo "lispit - executes a lisp expression" 
-  exit 0+        echo "  usage: lispit '(lisp_expression)'" 
 +        echo "" 
 +        exit 1 
 +fi 
 + 
 +ecl -norc -shell /dev/null -eval "(princ ${LSP_EXPR} )" 
 +echo "" 
 +exit 0 
 + 
 +</code>
  
 Example run: Example run:
  
-  % lispit '(mapcar (lambda (x) (expt x 2)) `(1 2 3 4 5))' +<code> 
-  (1 4 9 16 25)+ 
 +% lispit '(mapcar (lambda (x) (expt x 2)) `(1 2 3 4 5))' 
 +(1 4 9 16 25) 
 + 
 +</code>
  
 ===== ASDF / enabling readline ===== ===== ASDF / enabling readline =====
Line 87: Line 111:
 1) Create the user-level ASDF repository: 1) Create the user-level ASDF repository:
  
-  % mkdir -p $HOME/LISP/ASDF+<code> 
 + 
 +% mkdir -p $HOME/LISP/ASDF 
 + 
 +</code>
  
 2) Create the ASDF config directory and config file*: 2) Create the ASDF config directory and config file*:
  
-  % cd $HOME +<code>
-  % mkdir -p .config/common-lisp/source-registry.conf.d +
-  % vi .config/common-lisp/source-registry.conf.d/asdf.conf+
  
-  # ../asdf.conf +% cd $HOME 
-  ;;additional directory for ASDF to search (no recursion): +% mkdir -p .config/common-lisp/source-registry.conf.d 
-  (:directory "/LISP/ASDF/")+% vi .config/common-lisp/source-registry.conf.d/asdf.conf 
 + 
 +# ../asdf.conf 
 +;;additional directory for ASDF to search (no recursion): 
 +(:directory "/LISP/ASDF/") 
 + 
 +</code>
  
 *note: you can call the conf file anything you want. *note: you can call the conf file anything you want.
Line 103: Line 135:
 3) Download ecl-readline module and copy select files to $HOME/LISP/ASDF: 3) Download ecl-readline module and copy select files to $HOME/LISP/ASDF:
  
-  % cd /tmp +<code> 
-  % snarf http://www.common-lisp.net/project/ecl-readline/releases/ecl-readline-0.4.1.tar.gz + 
-  % tar xzf ecl-readline-0.4.1.tar.gz +% cd /tmp 
-  % cd ecl-readline-0.4.1/ +% snarf http://www.common-lisp.net/project/ecl-readline/releases/ecl-readline-0.4.1.tar.gz 
-  % cp ecl-*.* $HOME/LISP/ASDF/+% tar xzf ecl-readline-0.4.1.tar.gz 
 +% cd ecl-readline-0.4.1/ 
 +% cp ecl-*.* $HOME/LISP/ASDF/ 
 + 
 +</code>
  
 4) Create the ECL startup file: 4) Create the ECL startup file:
  
-  # $HOME/.eclrc +<code> 
-  (require 'asdf) + 
-  (asdf:operate 'asdf:load-op 'ecl-readline) +# $HOME/.eclrc 
-  (ecl-readline::enable)+(require 'asdf) 
 +(asdf:operate 'asdf:load-op 'ecl-readline) 
 +(ecl-readline::enable) 
 + 
 +</code>
  
 The next time you startup ECL it will compile the ecl-readline module and launch an interactive session. With ecl-readline enabled the default ECL prompt is "//CL-USER[n]>//" and you should then be able to use Emacs-style command editing and history recall. If you don't like the provided prompt you can change it by editing the //ecl-readline.lisp// file. The next time you startup ECL it will compile the ecl-readline module and launch an interactive session. With ecl-readline enabled the default ECL prompt is "//CL-USER[n]>//" and you should then be able to use Emacs-style command editing and history recall. If you don't like the provided prompt you can change it by editing the //ecl-readline.lisp// file.
Line 124: Line 164:
 <code> <code>
  
-  # $HOME/.eclrc +# $HOME/.eclrc 
-  (require 'asdf) +(require 'asdf) 
-  (setf ASDF:*ASDF-VERBOSE* nil) ; quiets ASDF output some +(setf ASDF:*ASDF-VERBOSE* nil) ; quiets ASDF output some 
-  (setf *load-verbose* nil)       ; quiets the LOAD process some +(setf *load-verbose* nil)       ; quiets the LOAD process some 
-  (asdf:operate 'asdf:load-op 'ecl-readline) +(asdf:operate 'asdf:load-op 'ecl-readline) 
-  (ecl-readline::enable :history-file "/var/tmp/.ecl-history"+(ecl-readline::enable :history-file "/var/tmp/.ecl-history"
-  ;; +;; 
-  ;; customizations+;; customizations
  
-  ;; GNU clisp-like SHELL cmd +;; GNU clisp-like SHELL cmd 
-  (defun shell (&amp;optional (shell_cmd "$SHELL")) +(defun shell (&amp;optional (shell_cmd "$SHELL")) 
-  "Args: (&amp;optional shell_cmd) +"Args: (&amp;optional shell_cmd) 
-  SHELL calls the EXT:SYSTEM function. Executes SHELL_CMD if given, otherwise +SHELL calls the EXT:SYSTEM function. Executes SHELL_CMD if given, otherwise 
-  User sub-shell is spawned. SHELL_CMD be string or symbol, 256 characters max." +User sub-shell is spawned. SHELL_CMD be string or symbol, 256 characters max." 
-     (ext:system shell_cmd))+   (ext:system shell_cmd))
  
 </code> </code>
Line 152: Line 192:
 ---- ----
  
-$Id: ecl_tutorial.html,v 1.4 2011/12/12 18:10:28 jgw Exp $ [[http://sdf.org/?tutorials/ecl_tutorial|Using ECL (Embeddable Common-Lisp) on SDF]] - legacy link+$Id: ecl_tutorial.html,v 1.4 2011/12/12 18:10:28 Exp jgw $ [[http://sdf.org/?tutorials/ecl_tutorial|Using ECL (Embeddable Common-Lisp) on SDF]] - traditional link (using [[wp>Revision_Control_System|RCS]])
  
using_ecl_embeddable_common-lisp_on_sdf.1615440112.txt.gz · Last modified: 2021/03/11 05:21 by hc9