Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> When, e.g., Lisp code is compiled, the effect of loading the compiled file is still the same as of the source file: the top-level forms (now in a compiled form) are executed one by one. (What's a "script"? A file with instructions to be run one by one.)

Fun fact: the SBCL implementation of Common Lisp actually adds a shebang to its compiled, binary Lisp files, so you can compile your Lisp script and then execute it from the shell.



My TXR Lisp adds a shebang to the compiled file, if the source file has one.

  $ cat > foo.tl
  #!/usr/bin/txr
  (pprinl "hello")
  $ txr -e '(compile-file "foo")'
  hello
  $ cat foo.tlo
  #!/usr/bin/txr
  (5 0 nil)
  ((2 3 #b'0200012400000004 02000010' #("hello") #(usr:pprinl)))
If the source file doesn't have a hash bang line, the one isn't output.

You'd think SBCL wouldn't need this sort of thing since it compiles to native code?


I just improved this tonight. If the original program is unsuffixed, and so its hash bang line uses the --lisp option to say "treat this as Lisp source" that option is translated to --compiled, so that if the compiled file is also unsuffixed, it will be properly treated as compiled.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: