Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to execute a common lisp text file (clozure cl)?

I am a beginner at Lisp, having only used DrRacket for some dabbling in Racket/Scheme. I have had much trouble figuring out how to run a .lisp file with Clozure CL for Windows. I tried running a .lisp file in SBCL on Ubuntu (running on virtualbox) without success as well.

I should mention that I've looked into the related questions about running files but I wasn't able to see any direct solution. Some are using .bat files, some are "creating applications" with Clozure CL's image (or something along those lines).

For SBCL in Ubuntu, I've tried:

sbcl lisptest.lisp       \ The python/forth way.

(load "lisptest.lisp")

(load lisptest.lisp)

(--load lisptest.lisp)

:cd C:\Temp
(:cd C:\Temp)

and more. I also tried to run it from notepad++:

cmd /k C:\Temp\ccl-1.11-windows\ccl\wx86cl64.exe "$(FULL_CURRENT_PATH)"

which is how I usually execute python files, but this method hasn't been successful.

**I will definitely start learning to use Emacs and Slime (Emacs is the obvious choice for lisp). But for the sake of knowledge, I would appreciate some tips on the alternative, basic-text-editor way of getting something trivial like "hello world" to print without my typing it explicity into the REPL and instead interpreting (or compiling) a text file with the instruction.

Thanks for your help.

like image 925
Byte Avatar asked Oct 16 '25 18:10

Byte


1 Answers

Typically programs have help - did you look at that?

SBCL, Ubuntu, from the shell:

A Common Lisp file:

$ cat test.lisp
(format t "Hello World~%~%")

SBCL shows help:

$ sbcl --help
Usage: sbcl [runtime-options] [toplevel-options] [user-options]
Common runtime options:
  --help                     Print this message and exit.
  --version                  Print version information and exit.
  --core <filename>          Use the specified core file instead of the default.
  --dynamic-space-size <MiB> Size of reserved dynamic space in megabytes.
  --control-stack-size <MiB> Size of reserved control stack in megabytes.

Common toplevel options:
  --sysinit <filename>       System-wide init-file to use instead of default.
  --userinit <filename>      Per-user init-file to use instead of default.
  --no-sysinit               Inhibit processing of any system-wide init-file.
  --no-userinit              Inhibit processing of any per-user init-file.
  --disable-debugger         Invoke sb-ext:disable-debugger.
  --noprint                  Run a Read-Eval Loop without printing results.
  --script [<filename>]      Skip #! line, disable debugger, avoid verbosity.
  --quit                     Exit with code 0 after option processing.
  --non-interactive          Sets both --quit and --disable-debugger.
Common toplevel options that are processed in order:
  --eval <form>              Form to eval when processing this option.
  --load <filename>          File to load when processing this option.

User options are not processed by SBCL. All runtime options must
appear before toplevel options, and all toplevel options must
appear before user options.

For more information please refer to the SBCL User Manual, which
should be installed along with SBCL, and is also available from the
website <http://www.sbcl.org/>.

Using the script option from above:

$ sbcl --script test.lisp
Hello World

The same for Clozure CL

$ ccl --help
usage: ccl <options>
     where <options> are one or more of:
        -h, --help : this text
        -V, --version : print (LISP-IMPLEMENTATION-VERSION) and exit
        -K, --terminal-encoding : specify character encoding to use for *TERMINAL-IO*
        -n, --no-init : suppress loading of init file
        -e, --eval : evaluate <form> (may need to quote <form> in shell)
        -l, --load : load <file>
        -T, --set-lisp-heap-gc-threshold : set lisp-heap-gc-threshold to <n>
        -Q, --quiet : if --batch, also suppress printing of heralds, prompts
    -R, --heap-reserve <n>: reserve <n> (default: 1610612736)
         bytes for heap expansion
    -S, --stack-size <n>: set  size of initial thread's control stack to <n>
    -Z, --thread-stack-size <n>: set default size of first (listener)  thread's stacks based on <n>
    -b, --batch: exit when EOF on *STANDARD-INPUT*
    --no-sigtrap : obscure option for running under GDB
    --debug : try to ensure that kernel debugger uses a TTY for I/O
    -I, --image-name <image-name>
     and <image-name> defaults to ccl.image

    Any arguments following the pseudoargument "--" are
    not processed and are available to the application as
    the value of CCL:*UNPROCESSED-COMMAND-LINE-ARGUMENTS* .

Using the load option from above

$ ccl --load test.lisp --eval '(quit)'
Hello World
like image 134
Rainer Joswig Avatar answered Oct 19 '25 11:10

Rainer Joswig



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!