Subject: Re: bizarrerie scheme

From: Christophe Pochon <[email-masked]>
Date: Wed, 1 Apr 2015 09:11:54 +0200

Il faut mettre "mafonction" entre parenthèses. Si tu ne le fais pas, scheme
pense que tu définis une variable et non pas une fonction. Enfin c'est ce
que je comprends, et ainsi ça fonctionne :

#(define a 0)

#(define b 1)

#(define (mafonction)

(if (= a 1)

(display "a")

(display "b")

)

(if (= b 1)

(display "b")

(display "a")

)

)

A+

Christophe

Christophe Pochon
http://www.christophe-pochon.com

Le 31 mars 2015 22:16, Daniel Cartron <[email-masked]> a écrit :

> Le mardi 31 mars 2015, 11:48:19 PharoahS a écrit :
> > si tu tapes en scheme:
> > (define mafonc 4) il comprend mafonc  donne 4
> > si tu tapes (define mafonc 4 5) il ne comprend pas d'aileurs qu'y aurait
> il
> > a comprendre?
>
> Ce qu'il y a à comprendre c'est que je voudrais une fonction sans
> arguments,
> qui puisse manipuler une 12aine de variables globales préexistantes en
> fonction d'une 12aine de drapeaux (#t/#f) de façon à décharger ma fonction
> principale.
>
> Donc si j'écris
> #(define a 1)
> #(define b 0)
>
> #(define (mafonction x)
>    (if (= x 1)
>        (display "a")
>        (display "b")
>    )
>
>    (if (= x -1)
>        (display "c")
>        (display "d")
>    )
> )
>
> #(display (mafonction -1))
>
> ça marchera mais ce n'est pas ce qui m'intéresse.
>
> --
> Cordialement, Daniel Cartron
> « Être con est tout à fait supportable tant qu'on l'est suffisamment pour
> ne pas
> savoir qu'on l'est. »
> François Cavanna - Le saviez-vous ?
>
>
> _______________________________________________
> liste de diffusion lilypond-user-fr
> [email-masked]
> https://lists.gnu.org/mailman/listinfo/lilypond-user-fr
>

---

From: PharoahS <[email-masked]>
Date: Wed, 1 Apr 2015 00:30:52 -0700 (MST)

sans les # (testé dans guile)
(define A 2)
(define B 3)
(define mafonc (list
(if (= A 1) 'un
  (if (= A 2) 'deux
    (if (= A 3) 'trois)))
(if (= B 1) 'un
  (if (= B 2) 'deux
    (if (= B 3) 'trois)))
))
mafonc donne (deux trois)

Cordialement

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/bizarrerie-scheme-tp7582662p7582667.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Daniel Cartron <[email-masked]>
Date: Wed, 01 Apr 2015 12:36:43 +0200

> sans les # (testé dans guile)

Eh oui ça marche aussi, je pige pas bien l'astuce de list, mais je met dans ma 
caisse à clous. Merci !

-- 
Cordialement, Daniel Cartron
« Depuis deux mille ans, Jésus se venge sur nous de n'être pas mort sur un 
canapé. »
E. M. Cioran

---

From: Daniel Cartron <[email-masked]>
Date: Wed, 01 Apr 2015 12:42:32 +0200

Le mercredi 1 avril 2015 09:11:54, vous avez écrit :
> pense que tu définis une variable et non pas une fonction. 

Ha oui t'as pas tort, t'as mm certainement raison. Désolé de pas y avoir pensé 
tout seul.

Merci beaucoup.

-- 
Cordialement, Daniel Cartron
« L'homme est imparfait mais ce n'est pas étonnant si l'on songe à l'époque où 
il fut créé. »
Alphonse Allais

---

From: PharoahS <[email-masked]>
Date: Wed, 1 Apr 2015 06:43:14 -0700 (MST)

Scheme traite des listes meme si ce n'est pas visible dans lilypond
La premiere série de if imbriqués (sur les A) donne un résultat res1
La deuxieme sur les B donne res2.
pour que scheme puisse retourner ces deux (ou plus) résultats je les mets
dans une liste
par (list res1 res2). Ca scheme sait retourner.
j'appelle ensuite cette cette liste mafonc par (define mafonc (list res1
res2))
j'aurais d'ailleurs pu l'appeler maliste ou toto.

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/bizarrerie-scheme-tp7582662p7582670.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Daniel Cartron <[email-masked]>
Date: Wed, 01 Apr 2015 22:08:59 +0200

Le mercredi 1 avril 2015, 06:43:14 PharoahS a écrit :
> pour que scheme puisse retourner ces deux (ou plus) résultats

ok j'ai pigé.

je peux donc avoir une fonction avec zéro entrée et plein de sorties sous 
forme de liste, c'est ça ?

Intéressant...

-- 
Cordialement, Daniel Cartron
« Lorsqu'un diplomate dit oui, cela signifie peut-être. Lorsqu'il dit peut-
être, cela veut dire non... et quand il dit non, cela veut dire que ce n'est 
pas un diplomate. »
H. L. Mencken

---

From: Christophe Pochon <[email-masked]>
Date: Wed, 1 Apr 2015 22:20:14 +0200

Il me semble que c'est pas vraiment une fonction, là, mais une définition
de variable de type liste.

Christophe

Christophe Pochon

---

From: PharoahS <[email-masked]>
Date: Wed, 1 Apr 2015 14:01:51 -0700 (MST)

L'interet de retourner des listes en Scheme (et en Lisp d'ailleurs est la
richesse potentielle de ce qui est retourné.
Par exemple une liste peut décrire une structure en arbre comme un tronc
avec deux branches qui se représenterait ainsi (tronc (branche1 (feuille2
feuille2)) ( branche2 (feuille3 feuille4))).
D'ailleurs tout s'écrit comme çà en Scheme. regarde par exemple:
(define mafonc (list (if (= A 1) 'un  (if (= A 2) 'deux  (if (= A 3)
'trois))) (if (= B 1) 'un (if (= B 2) 'deux  (if (= B 3) 'trois))))) c'est
une liste de listes de listes...

Si ce n'est pas un secret industriel, le but serait de faire quoi par
rapport à une partition?

CDT

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/bizarrerie-scheme-tp7582662p7582673.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Daniel Cartron <[email-masked]>
Date: Thu, 02 Apr 2015 08:50:40 +0200

> richesse potentielle de ce qui est retourné.

J'ai bien compris la richesse, c'est aussi ce qui fait la complexité du 
langage par rapport à d'autres. Enfin pour moi...

> Si ce n'est pas un secret industriel, le but serait de faire quoi par

Non c'est pas un secret c'est juste que ça concerne une famille d'instruments 
que peu d'entre vous connaissent, à savoir les seuls instruments à vent (à ma 
connaissance) où on puisse non seulement aspirer l'aire et pas seulement 
souffler, et en plus obtenir une note différente avec le mm doigté. Je veux 
parler de l'harmonica et de l'accordéon diatonique, lequel n'est rien d'autre 
que plusieurs harmonicas dans une boite avec un soufflet et des claviers.

Ça fait des années (7 je crois) que j'essaye de mettre au point une 
bibliothèque de fonctions pour transformer une mélodie en tablature, je me 
suis découragé à plusieurs reprises et là je m'y remet et ça commence à 
ressembler à qq chose.

Le pb est que pour ces tablatures, contrairement à celles des instruments à 
cordes frettées, il n'y a pas de norme, simplement des usages, ou des écoles 
(un peu comme la batterie). Donc une foultitude d'options à gérer, si je veux 
pouvoir rendre toutes les possibilités. Donc des charretées de if qui vont 
s'imbriquer et des tonnes de markups différents que j'essaye de ramener au 
minimum avec des if à l'intérieur, donc en utilisant des fonctions du genre 
make-line-markup. Malheureusement il n'y a vraiment aucune doc exploitable 
dans ce domaine donc je laisse tomber cette piste, je vais essayer avec des 
variables qui pourraient être vides en fonction des if imbriqués.

Voilà voilà maintenant tu sais tout.

-- 
Cordialement, Daniel Cartron
« Le basset est le meilleur ami du paveur. »
François Cavanna - Le saviez-vous ?