bach.eval and maxdepth question

Discussions, advice, bug reports and much more about the "bach" environment.
Post Reply
chrischandler
Posts: 11
Joined: Mon Oct 21, 2019 12:53 am

bach.eval and maxdepth question

Post by chrischandler » Fri Dec 20, 2019 9:29 pm

I'm trying to use bach.eval to apply functions to llll but @maxdepth isn't behaving how I expect.

In the patch below, I expected the example map function with @maxdepth 1 to produce "11 12 31 41 [50 60]" but instead I am getting "11 12 31 41 [51 61]". What am I doing wrong?

<pre><code>
----------begin_max5_patcher----------
570.3ocuTEsaaBCE8Y3qvxZOroQirMFBzGl1+QaUjArZbEwfLlrLUk+8cwNj
zzvVRyh5Kf70W4y8bN2680v.bQyFYGFcO5ATPvqgAAtPCAB1cN.uRrorVz4R
Cqk+po3Ebj+Jqbi0EtPTtbVqQosiW0JrkKU5mWXjkVOB77YjHDMmOKlkSnjb
NIIiv3yiPozgqXrYDzS6d.c+JktVZc3RODro2NFkrKppxUDPgcGklLVAch0x
pEPPn.VHrVipn25Yavd1EfWKMcpFM7xERyvkYPoQbWtMLb761vnafBIWKpQq
Dse8KanO9XDB9it6GH3D56H52FB8S3wpjs1kv4yqkIvOZFIKmklwyiYzXPEy
HWiXRmRL4ikfOQ6uakd7w38ucYSkKHdGwNgVGSJzGzejfuT8lB7SywL.mkH2
wy5CfXmxnY73XNmNmSRgd5j7+sMvlzFXSYCz+tMD4rhqf0fXaazmkZrL2W93
2+6VJ1AHMhURqzrPpEE0x2NQeBOKD5muNdNXfxJk8D+kRPLBJlf3DzCIDTJ4
oypFooyHyS3vzFIKIGlORAUg3DGd5GSb3SINwWk3LzD3V8NU+fqlv0J86Wz6
H4P7iEutldS43Kuu8CcfaUxNqRKrvH3QYw8YMoEc4XwuHrRtIXEeQXQuIXwt
HrhOAKu8IZa2s0yAz.LPW9KM90eQtiJs+nqcCajqUi46iHLPOsEZn6M980aR
8q2wqfM3Fcuxka3.AAHcSPZnIrqU34haPKba3evLFm9D
-----------end_max5_patcher-----------
</code></pre>

sydy
Posts: 156
Joined: Tue Mar 21, 2017 1:34 pm

Re: bach.eval and maxdepth question

Post by sydy » Wed Dec 25, 2019 2:28 pm

Hey Chris,
Hy Andrea, Hy Daniele,

@andrea, @daniele,
I tried the map() function in bach.eval too and, as far as I can understand, it's not working properly. Even the Examples in the help (Bach.eval) don't work as they should. (For instance, the example concerning the ask function (third argument of map() ) should unwrap the sublist only if their lenght is > 2. Try it, it's not working, it actually unwraps everything regardless of the length of the sublist. Here's a little example in which I tryied to apply the syntax of map() related to mindepth/maxdepth. Either I don't understand the syntax or it's not working...
<pre><code>
----------begin_max5_patcher----------
765.3ocyVE0aaBCD9YxuBKq8PiFMBab.RTUk5ug83xTlAbaoCLHiIKUU6+9N
aGZVSHcg1No4Hgiu6v288c2YySS7vo0aEsXzRzWQddOMwyyJxHva2ZObEeaV
Iu0ZFNqtpRH0XemNsXq1Juh2zKS1UU2oKEZ6aDrSZCWmceg7t0JQl14QxhjY
A9HRhaZdfYhBOQea+VUH62IxNgE4VOVm9vkTB1H6WSlXd3elXPJ9I7xGAgTd
18yDa3knFUgTeQtnQe+EeZKY5pU9nuaWhlNLJ6iMmH8iMBGDw3mwx.DPXxBK
jo.APRBRVPiRXKBojPCOD5zMB5fD0GcY041H.eHT1CDTuss7Mh70v6Cw0ZtV
qJR6ztpBumYPOrnJUj+GN1CuQnZKpkPTkJTFMIAjf.qRaFYr4kSUaci5tNih
1kqjqje4QoluEcv3pRXbsO5pp57a6jYZHvP.tuk2UpWhjckkSA0FK4s+30r3
JG+.Ls6O6MgLEAw6gRujL85UxaZZJKx31ME5ELbswavL5xqQvpkDzmQF9e3g
w8mR2wiPzXFrdFsrPJxp6jVZkM11UlsKkLKHdNCJTCRlufPXQ9nXF0nJZLct
D5+vN29LfouceFvx+FQFt1LGhXPavGZGM6j8ygr2P+LgchF580XGfO+cUR6v
1+eM4mHEp.dVfrKGLcPOY5v+bRIj33YQTRBKLjwHwrfnXez7EudFgNTF4Mci
Cv05Z4HKzR4x696HKwUVw5eNhhKJ948VwqDZgZsPxSKsAPva.llzmHu33Svo
la6gPyLM27HFkZ+..3ZNPJ7aXtg8ZY8ByUEmcA.cfCtnAVcrnQQagmKsY2S6
gtG7IV1fzH+kbYacmJqGg8Ua9n8wVtnUWHsWx7BqXuvpZUtqSkLXJ7C14QC6
6f2ouomEvCcV8N8U3Y4KxQ9xke4MM6Niz5HiafthGpcGV5aWVHcKs0SXkXSQ
u8NIbETzpgJ1Nk6T9sQtS9wvmyHTxthc4S.ffKscbRn1qsg6vhswbxul7a.T
qJrB
-----------end_max5_patcher-----------
</code></pre>

@chris
Here's a little workaround realized with a "for loop". Look at the second example. Of course, you can insert in the "for loop" whatever complicate function to map you want
Hope this helps for now...
m.

as for christmas and so on...
–– Deus naõ existe ––
but piece love, friends and family

<pre><code>
----------begin_max5_patcher----------
1377.3ocyYstbZiCE92vSwY7vzMLkjwxWgdYmtuC8egLrBakfyZKyXKmP1l9
tzmk8IaORxlPSHDaiRlzIEg0siN29Nex7igCrVlugUZAeBNGFL3GCGLP0kri
A0OOvJitIJkVpllEmca9xqslnGRv1HTcmlSiyXkk.oYHdUVdkHkITqiT2qtK
wcqYZgZYAWTOzZpHZUB+pEErHgdTGWmyrm.DcSHQ9oC98sqAERB+wxHIVcjv
i4otNVx994vgxOlzRcLJOKiwEOQIQosjU.z3XPjCLZzJfkxjSEhxKJXkqy4w
nFHGUrhAwr0hUoraXo333HhjbdYytllvYQ4Ub0V6tWil8KaY7CzM1xFuvtXZ
H8wznMA62G67r93If0RJ+pV4qmMS1nUnN4qclYsc2KnYLAqXAiSWlpNF1FLN
.mjx0Z0UuVfimRGCUdsfPkNZ2EcbpIimQY0O8v2y8H0ivdE78BXONlD6w2SA
2P7B5I1ii+qgN5ZRcrIdr+5nmIiGyKfzj+gAIbE7IaCMacJShcFwJ3JfUr6a
SDq.bypJYvkxkjmutzp6.nRk0k3qZbs6dHr66K7yFeY+wOIlF+70SYaRN6ux
Z+VUrftdc5cxX2OBi13HoFPSSa3MTB4bMMAPyS3O+pZVe3CvWjeycurEZrcq
QJG3lPk7JVr2YzwzARftYZnNqnCFTxr9jNHgznWwdhQyrrH0ZkqqtN0ry7OT
vhydzsPSpamZVkyN7HUNiRo36H.8MzzJFjeoBslJDEIKqDrxldlaIQvmaUig
WBzBFbcUo.A7kQzkRVxSfxb3t7JHhxgLJVT.WZFDeGmlkDMAPbeLsgg7WPx2
XNDkemPZYTq4VJWbF78mJKHoDXxiGUvhgkLr7gZigRAsPr8HGIpnop5JaOFw
47+P.qn2HGNRVHtlieBhbn1sGxn06RBGsQxSTJ9uRYMsDwY6McN3ESmCNX57
k4bAZVTgKV+UQBM054iWbs0ICdSkQJt1p5eyltS.yxpk0vfjVl66YsyIoL4e
0KFkiIQDrwPc3bWavy9BDwGBrMZZzzcxhHNu.Sn8kFYPxdKwaVdlLNUwuYzF
XDdkyBYHznMDM+mu0bGDU4h6u+d3TBFjBqKR3hSvkbtZMWLF9FZHfrCdqymO
vy07lXjkoDhxWwVwaVGLwaKFFkGqC1Mf4oYOKwT63EnXvy6hG.spcd0duAVL
jQS7N1fAV2vJjHV0bcvQlZaaSTCphFd+PZxalJYW6G5AmIRv6SNSHSIR24+q
wA0FCG8EY6D+ehiQI7.NRvYvCt3+9kODfODh+eJLS1A9mYesZZs0WeId6NC1
M6UAraTF52wJoK9pF2i1jRGkmlhGd3DH4R7CcRrND3jQzOQFOe9D3u0gDi0T
nckTn2YFZ5zd3vXsYdyVLh9QY70XLzBIGrsSriwv74etAtPetTBQ+UDjDoqL
9fjyMnixU0D3ouqp+y4n71SPp8SvL6uU1713GYger88UAblXaeDfyGHFVoJ8
78PLSy6vt6fx9czFYZKx6I.Mu9hmE75Qd6IoWXx0K.fIqmoSgpycTYNinl2h
ETSBq6zcC2OWr1ossPWe6R8UprBB+Q+NXJqlr+eOFnLupHpwFW+aLMAdvxEy
JEIbEW5clj7GmPNo8Fm0VI0rIGTRRHezldjRxtsRx4XkDosRx8HkTqMdGsax
uMADFQRdsQRDCHo13kbMgbl1RAcrQ3jv2JAEzBAEZ.A0FEx2.tn1pO+tbzvr
H6tZbYkPjh.KpdctFfdh5wDt9QERtUA6ljl4q6gVfEyDX4fpBckmMA5W.kUF
VKpfWknl6PoxghTUvV95wJWS05gpt9veN7+gxfDf7
-----------end_max5_patcher-----------
</code></pre>

andreaagostini
Posts: 209
Joined: Fri Dec 03, 2010 1:51 pm

Re: bach.eval and maxdepth question

Post by andreaagostini » Wed Jan 01, 2020 11:27 am

Hi,
thanks for the report, it actually appears that the mindepth attribute of map is not working correctly. I'm going to look into it.

As for Chris's example, it works as expected---but I understand that might be somewhat surprising, and it might be interesting to implement a different behavior. This should clarify the behavior of maxdepth:
<pre><code>
----------begin_max5_patcher----------
573.3ocuTEraaCCC8r8WgfvNrh4FHIK6XuCC6+nsHP1VnQEIxFxxYYnn+6il
JNcYsoIMHXWjsnj3i78H4ywQzp1s5dJ46j6HQQOGGEglFMDsaeDcsZa8JUOd
MpU+q1pmnIgi75sdzbkpd4rNmw5mNxNr1XWo83y36L1o70KM1GW3z09.rxxY
rDBuTNKUTx3rRIKqfIjySH47wiDhYLxCu501A+jaY6rZZvf.Bra47roHnWsQ
2r.LBXsP48NS0fOjsQ6ytH5Fsq2zZAOWociGV.QACO7k33o0WhStBLjdiZEY
sp6qeYK+96SHvWxs+ffDG7+MjuQ32LdvOAW1n67Kg8WHilAe3ErhRQdgrLUv
SSHorrSPoS9MXx+6NcvoT59Gb.aKmht51F7pzco2QRtCSMxmTqzfF07Wg4+M
0yA7glfaeO0PbR0.n7bAuPllJk74RVNTemUdBwPbTwH4nBBmdAYMP19V6kUn
IJvU4z5msvpRYe7H4hftGbmZs1qcKzVU0J7orKHOGEPciw+F8kyHBFzdPjLx
cYLRN6gKiMxymwlmIgdNVQVIzejCrBCIGY9QIG4GIz3P0OTySOWdBeNckw9u
C8w7Yz9gjWe6fqdJV12vSdMMZz8diU4gVvCtUV3VuqDc9XwOKrjWErDmEVoW
ErROKr3uAqf7o551M0CAZDFnJ+o1v3uDbqwF1h0qTmdiY59AKJGT95gZ2AWX
p817vjb5ZXNtyNXv6FOlf.jXGjEJs56TgbAazheI9OPkW19p
-----------end_max5_patcher-----------
</code></pre>
So, when the mod function receives [50 60] it performs [50 60] + 1 which, as the + operator is listable, returns [51 61]. Would it make sense to have a way for items beyond maxdepth not to be passed to the mod function? Perhaps it would...

Anyway, this might actually be what you're looking for:
<pre><code>
----------begin_max5_patcher----------
591.3ocuUssaaCCC8Y6uBBg8vJlafjrri8.5v9OZKBji0ZTQhrgrRVFJx+9n
khSaVaZtff8hsEIkN7vCE8KwQjpl0pNB7c3dHJ5k3nHuodCQaWGQVHWOctry
GFwn9cS0yjjfKmZsyatRNc1nVq13FbYVtPalqb9sw1ZrU5lNSadZhUM0EfUT
Nhl.rRwnTdIkQKEzrBJWLNAxY8t37QT3wWO0lktgikt0pt1mDXhcKikMjAcx
Up5InQDqIRmypqV5BrMZG6hHqT1NciAO4Jks2YAlETuyMwwCO2DmbEpPpUx4
vBY6W+xZ1COj.3a31e.5eA0pV2Lb4Mvc2ALvMSY.z42vuUy6T322zugehP4C
EX2bgU5L7EqfVTxyKDkobVZBHR4GoTObtASt+zpBGJgraC6oBhgraZSsOTxV
ZeljdeJCmo1pPMs9Mo++M01h0IE3W9QpD+npDJE4bVgHMUHXiEzb79PV4QDI
9AEojCJTLxEvZrX6ZLWVCHuv+TL77ba3pjlmN.W3jcfakKTNkchxHql62J8B
3Yu.pp0t2ouLJvoPJEDT39LJjSe7xpF44iniyD3cQZQVIduIGqJTewQjevhi
3yDZ+P3OUySO05je6j4Zy+9SBOe5suewqqYoc5PtLzek.uRiZUmSajN7J3dQ
IBQ8gRzoik3jvJ6pfE+jvJ8pfU5IgE6cXEjOYa61oddf5gA6xetIL9KwuTaB
K88qDqZkdH9fEoEaecXu6RaXZ957vDdxBb9t0rT6iMtmfHj9aPFr0pqUF3h+
hV7l3+hPhuOT
-----------end_max5_patcher-----------
</code></pre>

Cheers,
andrea

Post Reply