Jean-Claude Beaudoin | 18 May 06:21 2016
Picon

Anyone interested in "package versioning"?


Hi CL Pros,

I just came across a post on Quora by Robert Smith where he mentions the idea of assigning some sort of "version" to Common Lisp packages in order to improve code configuration control.

This seems to me to be a pretty neat and interesting idea!

Has anyone of you explored such a concept, or know of anyone that did?
Or, is anyone of you curious about it?

I think pretty seriously that I will implement something like this as a CL extension in my upcoming MKCL 2.0.

Cheers,

Jean-Claude Beaudoin

Don Morrison | 7 Apr 01:21 2016
Picon

Advice sought on structuring a system

I'm tidying up a library of code, Roan (for building things that play with change ringing, you probably don't want to know the details :-), for eventual inclusion in Quicklisp. In thinking about its dependencies I've run into an issue I'm not sure how best to address. I asked Zach Beane for advice, but he, too, isn't sure how best to deal with it, and suggested I consult folks on this list.

My library has dependencies upon several others, all readily available from Quicklisp. One them, though, cl-sqlite (or perhaps it's better referred to as sqlite, it's rather conflicted about what it wants to call itself) in turn has a dependency on a binary library, sqlite3. For example, if the sqlite3 binary library is not install, doing

(ql:quickload :sqlite)

signals an error when it's setting up FFI things.

However Roan's use of SQLite is not essential to Roan's usefulness (well, it's probably not all that useful to most people anyway, only to those interested in change ringing, a small audience). There's really only one, tiny corner of functionality in Roan it supports. While sqlite3 is easily obtained, it would seem polite to allow use of Roan without it, simply disabling  the two functions that depend upon it. The "disable if the cl-sqlite stuff is not present" part I can easily do. What's causing me to scratch my head is figuring out how to set things up so Roan will still install whether or not the sqlite3 binary library is present.

Three unattractive possibilities that come to mind are

- Define two different roan ASDF systems: one consisting of most stuff, without the SQLite-dependent bits, and the other the "real" one that loads the first plus cl-sqlite. Then the user picks which one to load based on need.

- Define something to push onto *features* that, if present, comments out in roan.asd the dependency on cl-sqlite, etc. Then the user has to push the appropriate keyword onto *features* before loading roan, if she doesn't have sqlite3.

- I'm guessing I could probably include some code in the roan.asd file that does something or other nasty looking for the binary library, and then adjusts the defsystem appropriately or something (ugh).

None of these is particularly appealing. The first two seem to put too much on the shoulders of the poor luser who just wants to load the darn thing without having to think about lower level stuff, and the last (a) seems to confound too much actually doing complex, kludgy stuff with what should be just declarative, and (b) is something I seriously doubt I'd get right, especially in a portable way.

It seems there has got to be A Better Way. Has anyone dealt with a similar situation? Or, even if not, might you have a good idea?

I suppose an attractive possibility might be to wrap some sort of condition handler around the place inside ASDF that's trying to load the cl-sqlite dependency, but I don't know my way around the ASDF internals enough to have a sense of where that should be done, or if it's even practical. Is there a good place inside of ASDF to do such a thing? It seems fairly modular, so it seems likely. Maybe it's as easy as defining a specialized method of some sort, or an :around method on something or other?

Thanks!




-- 
"There were two cultures, as far as he was concerned. One was the real
one, the other was occupied by people who liked machinery and ate
pizza at unreasonable hours."          -- Terry Pratchett, _The Last Hero_

Didier Verna | 6 Apr 14:20 2016
Face
Picon
Picon
Picon
Picon
Gravatar

[CFPart] ELS'16, 9th European Lisp Symposium, May 9-10, Kraków, Poland


		 ELS'16 - 9th European Lisp Symposium

		    Department of Computer Science
	       AGH University of Science and Technology
			    Kraków, Poland

			    May 9-10, 2016

		   In cooperation with: ACM SIGPLAN

	  Sponsored by EPITA, Franz Inc., LispWorks Ltd., IdEx
		 and Dept. of Computer Science AGH UST

	       http://www.european-lisp-symposium.org/

Recent news:

- Full programme now available online
- Registration now open (early registration deadline: April 25)

The purpose of the European Lisp Symposium is to provide a forum for
the discussion and dissemination of all aspects of design,
implementation and application of any of the Lisp and Lisp-inspired
dialects, including Common Lisp, Scheme, Emacs Lisp, AutoLisp, ISLISP,
Dylan, Clojure, ACL2, ECMAScript, Racket, SKILL, Hop and so on. We
encourage everyone interested in Lisp to participate.

Keynote speakers:

- Pierre Castéran -- Program Proving with Coq
- Stephan Karpinski -- Julia: to Lisp or Not to Lisp?
- Francis Sergeraert -- Lexical Closures and Complexity

Important dates:

-   25 Apr 2016 Early registration deadline
- 9-10 May 2016 Symposium

Programme chair:
  Irène Durand, LaBRI, University of Bordeaux, France

Local chair:
  Michał Psota, Emergent Network Defense, Kraków, Poland

Programme committee:
  Antonio Leitao — INESC-ID / Instituto Superior Técnico, Universidade
    de Lisboa, Portugal
  Charlotte Heerzel — IMEC, Leuven, Belgium
  Christian Queinnec — University Pierre et Marie Curie, Paris 6, France
  Christophe Rhodes — Goldsmiths, University of London, United Kingdom
  Didier Verna  — EPITA Research and Development Laboratory, France
  Erick Gallesio — University of Nice-Sophia Antipolis, France
  François-René Rideau, Google, USA
  Giuseppe Attardi — University of Pisa, Italy
  Kent Pitman, HyperMeta Inc., USA
  Leonie Dreschler-Fischer — University of Hamburg, Germany
  Pascal Costanza — Intel Corporation, Belgium
  Robert Strandh — University of Bordeaux, France

Search Keywords:

#els2016, ELS 2016, ELS '16, European Lisp Symposium 2016,
European Lisp Symposium '16, 9th ELS, 9th European Lisp Symposium,
European Lisp Conference 2016, European Lisp Conference '16

--

-- 
Resistance is futile. You will be jazzimilated.

Lisp, Jazz, Aïkido: http://www.didierverna.info

Didier Verna | 20 Feb 13:07 2016
Face
Picon
Picon
Picon
Picon
Gravatar

[CfP] ELS 2016 Deadline extension: Sat Feb 27


		 ELS'16 - 9th European Lisp Symposium

		    Department of Computer Science
	       AGH University of Science and Technology
			    Kraków, Poland

			    May 9-10, 2016

		   In cooperation with: ACM SIGPLAN

	  Sponsored by EPITA, Franz Inc., LispWorks Ltd., IdEx
		 and Dept. of Computer Science AGH UST

	       http://www.european-lisp-symposium.org/

Recent news:

- *** Submission deadline extended to Saturday Feb 27 ***

The purpose of the European Lisp Symposium is to provide a forum for
the discussion and dissemination of all aspects of design,
implementation and application of any of the Lisp and Lisp-inspired
dialects, including Common Lisp, Scheme, Emacs Lisp, AutoLisp, ISLISP,
Dylan, Clojure, ACL2, ECMAScript, Racket, SKILL, Hop and so on. We
encourage everyone interested in Lisp to participate.

The 9th European Lisp Symposium invites high quality papers about
novel research results, insights and lessons learned from practical
applications and educational perspectives. We also encourage
submissions about known ideas as long as they are presented in a new
setting and/or in a highly elegant way.

Topics include but are not limited to:

- Context-, aspect-, domain-oriented and generative programming
- Macro-, reflective-, meta- and/or rule-based development approaches
- Language design and implementation
- Language integration, inter-operation and deployment
- Development methodologies, support and environments
- Educational approaches and perspectives
- Experience reports and case studies

We invite submissions in the following forms:

  Papers: Technical papers of up to 8 pages that describe original
    results or explain known ideas in new and elegant ways.

  Demonstrations: Abstracts of up to 2 pages for demonstrations of
    tools, libraries, and applications.

  Tutorials: Abstracts of up to 4 pages for in-depth presentations
    about topics of special interest for at least 90 minutes and up to
    180 minutes.

  The symposium will also provide slots for lightning talks, to be
  registered on-site every day.

All submissions should be formatted following the ACM SIGS guidelines
and include ACM classification categories and terms. For more
information on the submission guidelines and the ACM keywords, see:
http://www.acm.org/sigs/publications/proceedings-templates and
http://www.acm.org/about/class/1998. The conference proceedings will be
published in the ACM Digital Library.

Important dates:

 -   *** EXTENDED *** 27 Feb 2016 Submission deadline *** EXTENDED ***
 -   25 Mar 2016 Notification of acceptance
 -   15 Apr 2016 Early registration deadline
 -   22 Apr 2016 Final papers due
 - 9-10 May 2016 Symposium

Programme chair:
  Irène Durand, LaBRI, University of Bordeaux, France

Local chair:
  Michał Psota, Emergent Network Defense, Kraków, Poland

Programme committee:
  Antonio Leitao — INESC-ID / Instituto Superior Técnico, Universidade
    de Lisboa, Portugal
  Charlotte Heerzel — IMEC, Leuven, Belgium
  Christian Queinnec — University Pierre et Marie Curie, Paris 6, France
  Christophe Rhodes — Goldsmiths, University of London, United Kingdom
  Didier Verna  — EPITA Research and Development Laboratory, France
  Erick Gallesio — University of Nice-Sophia Antipolis, France
  François-René Rideau, Google, USA
  Giuseppe Attardi — University of Pisa, Italy
  Henry Lieberman — MIT, USA
  Kent Pitman, HyperMeta Inc., USA
  Leonie Dreschler-Fischer — University of Hamburg, Germany
  Pascal Costanza — Intel Corporation, Belgium
  Robert Strandh — University of Bordeaux, France

Search Keywords:

#els2016, ELS 2016, ELS '16, European Lisp Symposium 2016,
European Lisp Symposium '16, 9th ELS, 9th European Lisp Symposium,
European Lisp Conference 2016, European Lisp Conference '16

--

-- 
Resistance is futile. You will be jazzimilated.

Lisp, Jazz, Aïkido: http://www.didierverna.info

Antoniotti Marco | 4 Feb 19:03 2016
Picon

Naming suggestions

Dear all,

in the quest for RESTHBDB) RE-doing Stuff That Has Been Done Before) I am trying to come up with a name for a referencing/dereferencing operator.

Think of something like

(<name-of-reference-operator> #2A((1 0) (0 1)) 0 0) ==> 1

of

(<name-of-reference-operator> #H((foo . bar) (we . 42)) ‘foo) ==> BAR ; I am cheating.   #H(..) is a hash table.

SETF methods will be defined as expected.

Now.  What could be a good name?  I have the following list.

REF
REF$
[]
[[]]
AT
<at>
GETAT

What do you think? (Full disclosure: I usually refrain from taking up non alphabetic names)

Cheers

MA

--
Marco Antoniotti, Associate Professor tel. +39 - 02 64 48 79 01
DISCo, Università Milano Bicocca U14 2043 http://bimib.disco.unimib.it
Viale Sarca 336
I-20126 Milan (MI) ITALY

Please check: http://cdac.lakecomoschool.org

Please note that I am not checking my Spam-box anymore.
Please do not forward this email without asking me first.





Didier Verna | 21 Jan 10:38 2016
Face
Picon
Picon
Picon
Picon
Gravatar

[CfP] 9th European Lisp Symposium, May 9-10, Krakow, Poland


		 ELS'16 - 9th European Lisp Symposium

		    Department of Computer Science
	       AGH University of Science and Technology
			    Kraków, Poland

			    May 9-10, 2016

		   In cooperation with: ACM SIGPLAN

 Sponsored by EPITA, Franz Inc., LispWorks Ltd. and Dept. of Computer
			   Science AGH UST

	       http://www.european-lisp-symposium.org/

Recent news:

- Submission deadline in less than a month!
- 3nd invited speaker announced: Stephan Karpinski on Julia: to Lisp
  or Not to Lisp?

The purpose of the European Lisp Symposium is to provide a forum for
the discussion and dissemination of all aspects of design,
implementation and application of any of the Lisp and Lisp-inspired
dialects, including Common Lisp, Scheme, Emacs Lisp, AutoLisp, ISLISP,
Dylan, Clojure, ACL2, ECMAScript, Racket, SKILL, Hop and so on. We
encourage everyone interested in Lisp to participate.

The 9th European Lisp Symposium invites high quality papers about
novel research results, insights and lessons learned from practical
applications and educational perspectives. We also encourage
submissions about known ideas as long as they are presented in a new
setting and/or in a highly elegant way.

Topics include but are not limited to:

- Context-, aspect-, domain-oriented and generative programming
- Macro-, reflective-, meta- and/or rule-based development approaches
- Language design and implementation
- Language integration, inter-operation and deployment
- Development methodologies, support and environments
- Educational approaches and perspectives
- Experience reports and case studies

We invite submissions in the following forms:

  Papers: Technical papers of up to 8 pages that describe original
    results or explain known ideas in new and elegant ways.

  Demonstrations: Abstracts of up to 2 pages for demonstrations of
    tools, libraries, and applications.

  Tutorials: Abstracts of up to 4 pages for in-depth presentations
    about topics of special interest for at least 90 minutes and up to
    180 minutes.

  The symposium will also provide slots for lightning talks, to be
  registered on-site every day.

All submissions should be formatted following the ACM SIGS guidelines
and include ACM classification categories and terms. For more
information on the submission guidelines and the ACM keywords, see:
http://www.acm.org/sigs/publications/proceedings-templates and
http://www.acm.org/about/class/1998. The conference proceedings will be
published in the ACM Digital Library.

Important dates:

 -   19 Feb 2016 Submission deadline
 -   25 Mar 2016 Notification of acceptance
 -   15 Apr 2016 Early registration deadline
 -   22 Apr 2016 Final papers due
 - 9-10 May 2016 Symposium

Programme chair:
  Irène Durand, LaBRI, University of Bordeaux, France

Local chair:
  Michał Psota, Emergent Network Defense, Kraków, Poland

Programme committee:
  Antonio Leitao — INESC-ID / Instituto Superior Técnico, Universidade
    de Lisboa, Portugal
  Charlotte Heerzel — IMEC, Leuven, Belgium
  Christian Queinnec — University Pierre et Marie Curie, Paris 6, France
  Christophe Rhodes — Goldsmiths, University of London, United Kingdom
  Didier Verna  — EPITA Research and Development Laboratory, France
  Erick Gallesio — University of Nice-Sophia Antipolis, France
  François-René Rideau, Google, USA
  Giuseppe Attardi — University of Pisa, Italy
  Henry Lieberman — MIT, USA
  Kent Pitman, HyperMeta Inc., USA
  Leonie Dreschler-Fischer — University of Hamburg, Germany
  Pascal Costanza — Intel Corporation, Belgium
  Robert Strandh — University of Bordeaux, France

Search Keywords:

#els2016, ELS 2016, ELS '16, European Lisp Symposium 2016,
European Lisp Symposium '16, 9th ELS, 9th European Lisp Symposium,
European Lisp Conference 2016, European Lisp Conference '16

--

-- 
 <at> -quartet live: Sunset/Sunside, Paris, Jan 26 2016 !
Book now: http://www.sunset-sunside.com/2016/1/artiste/2101/3453/

Lisp, Jazz, Aïkido: http://www.didierverna.info

Alessio Stalla | 30 Dec 00:52 2015
Picon

Package extensions usage

Hi everyone,

I'd like to run a little poll among experienced Lisp developers. The topic is the usage in the wild of the extensions to the package system provided by various implementations. My apologies to people who are subscribed to the ABCL mailing list, where some time ago I submitted the same questions getting back several insightful answers but no actual data.

So, here is how it is. I'm working on a novel idea (I hope) regarding symbols and packages; I won't go into the details now. It suffices to say that there is some overlap with features offered by certain Lisp implementations, namely:

 * package-local nicknames: the ability to specify, for each package, a list of nicknames for other packages which are in effect only in that package; available on ABCL and SBCL (http://www.sbcl.org/manual/#Package_002dLocal-Nicknames) and possibly other implementations I'm not aware of.
 * "Hierarchical" packages: a naming convention for packages understood by the reader and a few support functions, which allow to have concise nicknames for a group of closely related packages, such as com.foo.mylib.api and com.foo.mylib.implementation. Found natively in Allegro CL (http://franz.com/support/documentation/current/doc/packages.htm) and in an open-source library by P. Bourguignon.

My questions:
1) First and foremost, is anybody actually using those features? What are you using them for?
2) If yes, how useful are they for you? What shortcomings do you find in them?
Didier Verna | 7 Oct 18:10 2015
Face
Picon
Picon
Picon
Picon
Gravatar

[CfP] European Lisp Symposium 2016, May 9-10, Kraków, Poland


		 ELS'16 - 9th European Lisp Symposium
	       AGH University of Science and Technology
			    Kraków, Poland

			    May 9-10, 2016

	       http://www.european-lisp-symposium.org/

		Sponsored by EPITA and AGH University

The purpose of the European Lisp Symposium is to provide a forum for
the discussion and dissemination of all aspects of design,
implementation and application of any of the Lisp and Lisp-inspired
dialects, including Common Lisp, Scheme, Emacs Lisp, AutoLisp, ISLISP,
Dylan, Clojure, ACL2, ECMAScript, Racket, SKILL, Hop and so on. We
encourage everyone interested in Lisp to participate.

The 9th European Lisp Symposium invites high quality papers about
novel research results, insights and lessons learned from practical
applications and educational perspectives. We also encourage
submissions about known ideas as long as they are presented in a new
setting and/or in a highly elegant way.

Topics include but are not limited to:

- Context-, aspect-, domain-oriented and generative programming
- Macro-, reflective-, meta- and/or rule-based development approaches
- Language design and implementation
- Language integration, inter-operation and deployment
- Development methodologies, support and environments
- Educational approaches and perspectives
- Experience reports and case studies

We invite submissions in the following forms:

  Papers: Technical papers of up to 8 pages that describe original
    results or explain known ideas in new and elegant ways.

  Demonstrations: Abstracts of up to 2 pages for demonstrations of
    tools, libraries, and applications.

  Tutorials: Abstracts of up to 4 pages for in-depth presentations
    about topics of special interest for at least 90 minutes and up to
    180 minutes.

  The symposium will also provide slots for lightning talks, to be
  registered on-site every day.

All submissions should be formatted following the ACM SIGS guidelines
and include ACM classification categories and terms. For more
information on the submission guidelines and the ACM keywords, see:
http://www.acm.org/sigs/publications/proceedings-templates and
http://www.acm.org/about/class/1998.

Important dates:

 -   19 Feb 2016 Submission deadline
 -   25 Mar 2016 Notification of acceptance
 -   15 Apr 2016 Early registration deadline
 -   22 Apr 2016 Final papers due
 - 9-10 May 2016 Symposium

Programme chair:
  Irène Durand, University of Bordeaux, France

Local chair:
  Michał Psota, Emergent Network Defense, Kraków, Poland

Programme committee:
  Antonio Leitao — INESC-ID / Instituto Superior Técnico, Universidade
    de Lisboa, Portugal
  Charlotte Heerzel — IMEC, Leuven, Belgium
  Christian Queinnec — University Pierre et Marie Curie, Paris 6, France
  Christophe Rhodes — Goldsmiths, University of London, United Kingdom
  Didier Verna  — EPITA Research and Development Laboratory, France
  Erick Gallesio — University of Nice-Sophia Antipolis, France
  Francois-René Rideau, Google, USA
  Giuseppe Attardi — University of Pisa, Italy
  Henry Lieberman — MIT, USA
  Kent Pitman, HyperMeta Inc., U.S.A.
  Leonie Dreschler-Fischer — University of Hamburg, Germany
  Pascal Costanza — Intel Corporation, Belgium
  Robert Strandh — University of Bordeaux, France

Search Keywords:

#els2016, ELS 2016, ELS '16, European Lisp Symposium 2016,
European Lisp Symposium '16, 9th ELS, 9th European Lisp Symposium,
European Lisp Conference 2016, European Lisp Conference '16

--

-- 
My new Jazz CD entitled "Roots and Leaves" is out!
Check it out: http://didierverna.com/records/roots-and-leaves.php

Lisp, Jazz, Aïkido: http://www.didierverna.info

Edi Weitz | 4 Sep 11:43 2015
Picon

Conditions and *PRINT-READABLY*

Hi everybody!

With the code at the end of this mail I would have expected an outcome
similar to this one

  R: T  , E: T   - [REFUSED TO PRINT]
  R: T  , E: NIL - [REFUSED TO PRINT]
  R: NIL, E: T   - #<MY-CONDITION 20098B07>
  R: NIL, E: NIL - My condition occured.

because the standard says that "if *PRINT-READABLY* is true, printing
proceeds as if *PRINT-ESCAPE* were also true."  This would mean that
the first two lines should look the same because the value of
*PRINT-ESCAPE* is irrelevant in this case.  However, while this is
what happens for example with LispWorks, AllegroCL, and CLISP, in some
other Lisps like SBCL, CCL, and ECL the second line looks like the
fourth.

Isn't that wrong?  Or is their interpretation of the standard that the
report function is responsible for obeying *PRINT-READABLY*?  But how
does that fit with the possibility of using strings for :REPORT?

Thanks,
Edi.

(define-condition my-condition ()
  ()
  (:report "My condition occured."))

(defun test ()
  (let ((error (make-condition 'my-condition)))
    (dolist (readably '(t nil))
      (dolist (escape '(t nil))
        (format t "~&R: ~3A, E: ~3A - " readably escape)
        (handler-case
            (write error :readably readably :escape escape)
          (print-not-readable ()
            (write-string "[REFUSED TO PRINT]")))))))

Edi Weitz | 29 Aug 11:10 2015
Picon

PRINT-OBJECT for built-in classes

The following "works" in three different CL implementations I tried
while in three others the way complex numbers are printed doesn't
change.

? (defmethod print-object ((obj complex) stream)
     (format stream "#< ~A + ~A * I >"
                (realpart obj) (imagpart obj)))
#<STANDARD-METHOD PRINT-OBJECT (COMPLEX T)>
? #c(1 1)
#< 1 + 1 * I >

My understanding of 22.1.2 of the standard is that each Lisp MUST have
a PRINT-OBJECT method for complex numbers.  The question then is
whether I'm allowed to redefine it like above (I think I am) and/or
whether an implementation is allowed to accept this redefinition
without a warning but then to ignore it (which, as I said, is what
happens in three respectable Lisps).

Thanks,
Edi.

[Note: There's no point in talking me out of this as I don't actually
want to do it anyway.  It's just an example and I'm only interested in
what exactly is governed by the standard.  Complex numbers are also
just an example.  I'm interested in PRINT-OBJECT for built-in classes
in general.]

Jean-Claude Beaudoin | 3 Aug 23:27 2015
Picon

Proper behavior of slot-initforms in defstruct?


Please consider the following code:

(defparameter init-a 1)

(let ((init-a 42) (serial-no 0))
  (defstruct foo (a init-a) (b (incf serial-no)))
  (defun get-foo-serial-no () serial-no))

(defstruct (bar (:include foo)) (c 33) d)

When one loads the above and then try to call #'make-bar the result
varies widely from one lisp implementation (clisp) to another.

clisp: (make-bar) --> #S(BAR :A 1 :B 1 :C 33 :D NIL)
ccl: (make-bar) --> <enter the debugger saying: "Unbound variable: SERIAL-NO">

lispworks, allegro and sbcl also behave more or less like ccl.

What is the proper ANSI-CL behavior in this case here?
Is clisp right in evaluating the slot initform in its "proper" lexical context?
Or is the correct behavior to replicate the slot initform verbatim
in the sub-structure constructor regardless of its original lexical context
like the others do?

I guess that this question has probably been asked before, in a somewhat
distant past, but my google skills have not been sharp enough to find it, sorry.



Gmane