From: Mario S. Mommer on

Norbert_Paul <norbertpauls_spambin(a)yahoo.com> writes:
> Raymond Toy wrote:
>> On 3/19/10 11:40 AM, Norbert_Paul wrote:
>> However, I wouldn't be surprised if you ended up with basically one
>> defsystem definition per routine. It would be pretty sweet if you could
>> just say you wanted the SVD routine, and defsystem would automatically
>> build just the routines needed to run the SVD routine.
> This is exactly what I had in mind in my initial post. But a defsystem
> definition per routine is a bit of overkill. Wouldn't that require a
> package declaration for each subroutine? (An asdf-learner's question)

No. One can just write

(asdf:defsystem :mysystem ...

without creating any :mysystem-asd package.

I don't think it necessarily is overkill. Maybe a small problem might
arise from the fact that *features* is a list, not a hash-table...
From: Norbert_Paul on
Mario S. Mommer wrote:
> No. One can just write
>
> (asdf:defsystem :mysystem ...
>
> without creating any :mysystem-asd package.

Yeah.
That was the point I was missing.

The manual even says on the <system>-system package naming convention:
"This is not absolutely required by asdf, but ... "
I overlooked that and believed the opposite be true.

So there is at least the possibiliy to create a system per subroutine
each within one :lapack-system.

I just figured out that you can pass more arguments
to asdf:operate (it has &rest args). Can this somehow (using
"documented" features only) be exploited to create something like

(asdf:operate 'asdf:load-source-op 'lapack 'dgesvd)
or
(asdf:operate 'asdf:load-source-op 'lapack 'dgesvd 'dgesv)
or
(asdf:operate 'asdf:load-source-op 'lapack '(dgesvd dgesv))

or the like? This would be the nicest way. How does asdf:traverse work?

> I don't think it necessarily is overkill. Maybe a small problem might
> arise from the fact that *features* is a list, not a hash-table...

Does asdf use *features* except for providing itself? I didn't notice a change in
*features* after loading source:

* (let ((features (copy-list *features*)))
(asdf:operate 'asdf:load-source-op 'blas)
(equal features *features*) )

=> T

Thank you
Norbert