Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p><strong>Ant</strong> is a program that interprets commands written in some XML language. You can, as justinhj mentioned in his answer use some XML parser (like the mentioned XMLisp) and convert the XML description in some kind of Lisp data and then write additional code in Lisp. You need to reimplement also some of the Ant interpretation.</p> <p>Much of the primitive stuff in Ant is not needed in Lisp. Some file operations are built-in in Lisp (delete-file, rename-file, probe-file, ...). Some are missing and need to be implemented - alternative you can use one of the existing libraries. Also note that you can LOAD Lisp files into Lisp and execute code - there is also the REPL - so it comes already with an interactive frontend (unlike Java).</p> <p>Higher level build systems in Common Lisp usually are implementing an abstraction called '<strong>SYSTEM</strong>'. There are several of those. <strong>ASDF</strong> is a popular choice, but there are others. A system has subsystems and files. A system has also a few options. Its components also have options. A system has either a structural description of the components, a description of the dependencies, or a kind descriptions of 'actions' and their dependencies. Typically these things are implemented in an object-oriented way and you can implement 'actions' as Lisp (generic) functions. Lisp also brings functions like COMPILE-FILE, which will use the Lisp compiler to compile a file. If your code has, say, C files - you would need to call a C compiler - usually through some implementation specific function that allows to call external programs (here the C compiler).</p> <p>As, mentioned by dmitry-vk, <a href="http://www.cliki.net/asdf" rel="noreferrer">ASDF</a> is a popular choice. LispWorks provides <a href="http://www.lispworks.com/documentation/lw51/LWUG/html/lwuser-241.htm#pgfId-884853" rel="noreferrer">Common Defsystem</a>. Allegro CL has their own DEFSYSTEM. Its <a href="http://www.franz.com/support/documentation/current/doc/defsystem.htm" rel="noreferrer">DEFSYSTEM manual</a> describes also how to extend it.</p> <p>All the Lisp solution are using some kind of <strong>Lisp syntax</strong> (not XML syntax), usually implemented by a macro to describe the system. Once that is read into Lisp, it turns into a data representation - often with CLOS instances for the system, modules, etc.. The actions then are also Lisp functions. Some higher-order functions then walk over the component graph/tree and execute actions of necessary. Some other tools walk over the component graph/tree and return a representation for actions - which is then a proposed <strong>plan</strong> - the user then can let Lisp execute the whole plan, or parts of the plan.</p> <p>On a Lisp Machine a simple system description looks like this:</p> <pre><code>(sct:defsystem scigraph (:default-pathname "sys:scigraph;" :required-systems "DWIM") (:serial "package" "copy" "dump" "duplicate" "random" "menu-tools" "basic-classes" "draw" "mouse" "color" "basic-graph" "graph-mixins" "axis" "moving-object" "symbol" "graph-data" "legend" "graph-classes" "present" "annotations" "annotated-graph" "contour" "equation" "popup-accept" "popup-accept-methods" "duplicate-methods" "frame" "export" "demo-frame")) </code></pre> <p>Above defines a system SCIGRAPH and all files should be compiled and load in serial order.</p> <p>Now I can see what the Lisp Machine would do to update the compiled code:</p> <pre> Command: Compile System (a system [default Scigraph]) Scigraph (keywords) :Simulate (compiling [default Yes]) Yes The plan for constructing Scigraph version Newest for the Compile operation is: Compile RJNXP:>software>scigraph>scigraph>popup-accept-methods.lisp.newest Load RJNXP:>software>scigraph>scigraph>popup-accept-methods.ibin.newest </pre> <p>It would compile one file and load it - I have the software loaded and changed only this file so far.</p> <p>For ASDF see the documentation mentioned on the CLIKI page - it works a bit different.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload