rob_w has quit [Remote host closed the connection]
avocadoist has quit [Remote host closed the connection]
seninha has joined #picolisp
pablo_escoberg has joined #picolisp
<pablo_escoberg>
OK, so I'm still not working on this until the weekend (and still working on tooling), but I thought of a way to explain why I want opts_meth: First of all, IMO, the most underused tool in the programming kit is sensible, override-able defaults. The way I like to implement this when working with objects is to have the defaults set in the class
<pablo_escoberg>
definition, and overridden during object creation. So if I were to stick to positional arguments, I would end up with object creation calls that look like this: (new '(+Foo) bar baz nil nil nil nil 'bat nil nil T 1 nil 0). As opposed to (new '(+Foo) bar baz (('x . 'bat) ('y . T) ('z . 0))) which I find a lot more readable. Hopefully that
seninha has quit [Remote host closed the connection]
<abu[7]>
I think consing argument lists is extremely clumsy and inefficient
<abu[7]>
And I don't believe it is needed
<abu[7]>
In any case it is premature
<abu[7]>
Your example is surely wrong (('x . 'bat) ('y . T) ('z . 0)))
<abu[7]>
The quotes!!!
<abu[7]>
You should really first write practical code and then start to abstract
<abu[7]>
I'm programming since 46 years now, but never had a situation where such a setup of passing lists with constant values ever were useful
<abu[7]>
But, ok, please try! I'm sure you'll give up soon
<abu[7]>
We had many people here being carried away with enthusiasm about fantastic ideas, who quickly disappeared and never showed up again ;)
<pablo_escoberg>
ok, I am pretty sure I won't be that guy. If it turns out I'm barking up the wrong tree, I'll drop it and work a different way. But I intend to spend the next year becoming a competent picolisp programmer. I consider it a superpower. I will also develop some tooling as I go and share it. And of course, no process like this would be
<pablo_escoberg>
complete without tons of stupid questions. I just hope I can contribute enough to compensate for the stupid questions. If I'm not, please lmk.
<abu[7]>
Great! So I'm looking forward ☺
<abu[7]>
There are no stupid questions anyway
<abu[7]>
Concerning the k/v list, I would propose this:
<abu[7]>
Instead of (new '(+Foo) bar '((x . bat) (y . T) (z . 0)))
<abu[7]>
much better is (new '(+Foo) bar 'x 'bat 'y T 'z 0))
<abu[7]>
Becaule if values like 'bat' are not constant, you need to build the list each time:
<abu[7]>
(new '(+Foo) bar (list (cons 'x 'bat) (cons 'y T) (cons 'z 0]
<abu[7]>
or in this case
<abu[7]>
(new '(+Foo) bar (cons (cons 'x 'bat) '(y . T) (z 0]
<abu[7]>
because T and 0 are constant
<abu[7]>
And if your syntax is (new '(+Foo) bar 'x 'bat 'y T 'z 0))
<abu[7]>
then you have (dm T (Bar . @) (doSomething Bar) (pass super]
<abu[7]>
and in the parent class's T you de (dm T @ (whil (next) (put This @ (next))))
<abu[7]>
that is all, no special mechanism needed
<abu[7]>
bbl
Guest65 has joined #picolisp
Guest65 has quit [Client Quit]
pablo_escoberg has quit [Quit: Client closed]
seninha has joined #picolisp
rob_w has joined #picolisp
msavoritias has quit [Remote host closed the connection]
rob_w has quit [Quit: Leaving]
pablo_escoberg has joined #picolisp
pablo_escoberg has quit [Ping timeout: 246 seconds]