Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Necessary information about beta release closette-jscl #2

Open
vlad-km opened this issue May 17, 2018 · 0 comments
Open

Necessary information about beta release closette-jscl #2

vlad-km opened this issue May 17, 2018 · 0 comments

Comments

@vlad-km
Copy link
Member

vlad-km commented May 17, 2018

Preface

In its original form, closette.lisp is not compiled. I am making some changes to the text so that the source texts can be compiled in JSCL. Also, some standard CL functions, that are missing in the current release JSCL, are added (remove-dublicate, union etc.). Will'be added a free interpretation of these functions, where they took, I do not remember.

Debugging and compilation of the package is performed in the environment. interactively in
Morem dev-repl, batch compilations with the use of Moren feature LORES.

I did not make a host compilation (SBCL/CCL), and I dont plan in the foreseeable future. If anyone takes do it, it's will be welcome.

The minimal goal of the project

revive the ancient package, in quality, acceptable for operation in the modern.

The maximum goal

refactor the original, to a level where it can be integrated into the JSCL, as a means of language

Compilation release to get executable code

  • using Moren facilitie LORES. SDF file is in the repository
  • use host-compilation (SBCL / CCL) to get the JS band
  • take the ready JS bandle from the repository

Linking a bandle

If you are working in Moren environment, then after executing the command (lores: qload: closette) you have compiled functions and the closette's environment.

For linking an already prepared bandle, that is located in your directory (moren-electron, jscl-chrome-extension) use the command (require "./closette.js")

Whats next

  • read The Art of the Metaobject Protocol (AMOP) - a complete guide to MOP
  • the file closette-test.lisp from the distribution
    http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/oop/clos/closette/ - a comprehensive` guide to practical use of.

Also

It is necessary to learn that in the implementation of a prototype of a standard class, an infinite object is used. Attempt to printing a results cause an error. Try to avoid such situations. To use the console, use something like a safe. So, type as

(defmacro safe (&rest body) `(prog1 t ,@body))

Also

(defmacro setf* (var &rest expr)
    `(progn
         (if (setf ,var ,@expr) t nil)))

This is a birth traum JSCL, and with this we need to do something. For example, use the depth of viewing of such objects in the system function print. Another way, to mark such objects as non-print.

How much this release is suitable for integration in the JSCL

In this form it is not ready for integration

Good hacking.

Always you,
V.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant