Arc Forumnew | comments | leaders | submitlogin
Clamp: Common Lisp with Arc Macros and Procedures (github.com)
9 points by malisper 3728 days ago | 9 comments


2 points by akkartik 3727 days ago | link

Very nice. You've been working on this since April?! Sorry I didn't notice until now.

I'll take a closer look in a few hours, but you might be interested in the tests from the old, lisp version of wart: https://github.com/akkartik/wart/tree/sbcl. It hadn't diverged very much at that point. Feel free to use it as you like.

-----

2 points by malisper 3727 days ago | link

It looks like we took two completely different approaches. You implemented a wart->CL compiler (wt-transform), while I just wrote all of the Arc utilities in Common Lisp and shadowed some built in procedures/macros.

Your approach probably winds (wound?) up being much more flexible in the long run.

-----

3 points by akkartik 3727 days ago | link

No, it's not a full compiler. It's different in a crucial respect: things it doesn't understand get passed straight out. This allows me to do most things as macros, just like you. More information: http://arclanguage.org/item?id=12814

I haven't dug into it yet, but I suspect the crucial difference might be your use of packages, which is more in line with Common Lisp idioms.

-----

2 points by akkartik 3727 days ago | link

Remind me, how does one install an asd package? :) Might be worth including in the Readme.

-----

2 points by malisper 3727 days ago | link

All you need is asdf 3.1.2 or later and Clamp has to be somewhere in your ~/common-lisp/ directory. Once you do that, just use (require :asdf) and (require :clamp).

I'll just include a reference to this[0] in the readme.

[0] http://common-lisp.net/project/asdf/asdf/Quick-start-summary...

-----

1 point by akkartik 3727 days ago | link

I get this error when running from the Clamp directory:

  $ sbcl
  * (require :asdf)
  NIL
  * (require :clamp)
  ASDF could not load clamp because
  Error while trying to load definition for system clamp from pathname
  ~/Clamp/clamp.asd:
     The name "ASDF-USER" does not designate any package..

  debugger invoked on a LOAD-SYSTEM-DEFINITION-ERROR in thread
  #<THREAD "initial thread" RUNNING {1002998F33}>:
    Error while trying to load definition for system clamp from pathname
    ~/Clamp/clamp.asd:
       The name "ASDF-USER" does not designate any package.

  Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.

  restarts (invokable by number or by possibly-abbreviated name):
    0: [RETRY                                 ] Retry EVAL of current toplevel form.
    1: [CONTINUE                              ] Ignore error and continue loading file "~/Clamp/clamp.asd".
    2: [ABORT                                 ] Abort loading file "~/Clamp/clamp.asd".
    3: [REINITIALIZE-SOURCE-REGISTRY-AND-RETRY] Retry finding system clamp after
                                                reinitializing the
                                                source-registry.
    4:                                          Exit debugger, returning to top
                                                level.

  ((FLET #:LAMBDA2286 :IN ASDF::LOAD-SYSDEF)
   #<SB-KERNEL:SIMPLE-PACKAGE-ERROR "The name ~S does not designate any package."
     {10049EB763}>)
  0]

-----

2 points by malisper 3727 days ago | link

I'm not sure but you might want to check your .sbclrc file for anything weird and make sure you have the latest version of asdf.

Other than that, the only thing I can suggest is opening a question on Stack Overflow.

-----

2 points by svetlyak40wt 3718 days ago | link

Malisper, I like your approach. Even thought to do something similar myself. Thank you!

-----

2 points by malisper 3718 days ago | link

Thank you. I would say the things to note would be defalias, ssyntax (in experimental), and how I used packages to redefine the standard procedures.

-----