[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Having trouble understanding optional and variable amount of argumen

From: Stefano Troncaro
Subject: Re: Having trouble understanding optional and variable amount of arguments
Date: Fri, 9 Mar 2018 01:16:42 -0300

I can't imagine how frustrating it must have been to try to upgrade from 1.8, ~5 years is so much time! Indeed, the changes from 1.8 to 2 must be very deep...
Thank you for taking the time to explain that, I found it very interesting.

I've thought about this some more. I don't know if you were interested in wrapping the functions that use opts and props in a macro, but I noticed a lot of redundancy so I gave it a try.
\version "2.19.80"
\include "oll-core/package.ily"

#(define-macro (define-void-function-with-options vars preds rulings . body)
   `(define-void-function ,(append '(opts) vars) ,(append '(ly:context-mod?) preds)
      (define rules
      (let ((props (context-mod->props rules #t opts)))
        . ,body)))

testRules =
#(define-void-function-with-options () ()
   `((ind ,number? 5)
     (target ,symbol?)
     (accepted-arg ,fraction? opt)
     (accepted-without-type opt)
     (msg ,string? "No message given"))
   (pretty-print props))

\testRules \with {
  msg = "Something"
  unk = "Unknown option"
  target = something
%  accepted-arg = 7/4
%  accepted-without-type = #(ly:make-moment 3/16)
Again, tell me if you find it convenient.

2018-03-08 20:26 GMT-03:00 Thomas Morley <address@hidden>:
2018-03-08 23:46 GMT+01:00 Stefano Troncaro <address@hidden>:

> @David, Harm
> I didn't know 1.8 was not maintained anymore. I imagine we're still using it
> because updating it would take a lot of work (and create instability) and
> dev time is better placed elsewhere, or something among those lines, am I
> right?

Well, guilev2 is deeply different from guilev1 in many ways.
David K may say more about the details or look into the archives.
After guille-2.0 was released we were not able to build LilyPond with
guilev2 for 5(?) years !

I'm now can build LilyPond from the git-repository with guile-2.2.3 in
a local branch.
Though, I need to apply several patches mostly from David K and
Antonio Ospite and I need to disable some functionality, which I don't
know to fix.
My kowledge of C++ is more or less zero...

>From a users point of view the biggest disadvantage is the speed of lilypond.
I think guile-2.0.12 was the first guile-version which could be made
work for us. Lilypond speed was down to a _factor_ of 5-10, iirc
Admittedly things improved during further guile-development.

I'm not sure how the values are nowadays, I should redo testings...

For the programmers David may want to chime in.
I'd like to mention only to major points:
- Encoding problems
- We have no infrastructure for precompiled .go-files.

Both or mostly beyond my knowledge :(

> Also, Harm, is that guilev2-lilypond that you named v2.21.0 a
> personal thing or is it something that is coming after the stable 2.20
> release is done?

I compile lilypond from the repository. Doing it from master will
result in 2.21.0.
The branch stable/2.20 is meant to become the next stable release.
Current devel-versions are compiled from this branch iirc.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]