(Apologies for the html email, it was poorly formatted, making my example very
difficult to follow. So let me try to give better examples.)
With sympy we would be able to create meaningful behavior for:
```
from sympy import symbols
y, x1, x2 = symbols('y x1 x2')
model = y ~ x1 + x2
model.is_linear() # -> True/False? (just an example!)
```
or
```
from sympy import symbols
theta, N, mu, sigma = symbols('theta N mu sigma')
distribution = theta ~ N(mu, sigma)
distribution.sample() # -> a symbolic sampling from the normal distribution
```
and for dataframes, arrays, or matrices, we could do something like:
```
model = df.y ~ df.x1 + df.x2
model.fit()
test_predictions = model.predict(df_test)
```
I would assume strict evaluation and minimal computation done to return
whatever "model" object we get back from the operation.
But as it stands, we can't use the operator, as it doesn't support a binary
operation. To Serhiy's point (a different reply to my first post),
`__sim__(self, other)` could be so implemented for integers, but that's not the
domain I am particularly interested in. I consider this akin to the adoption of
`@` for `__matmul__(self, other)`. We would not implement behavior for it, we
would merely provide language support the `a ~ b` usage.
- The name "sim" is taken from LaTeX. I think it would be beneficial to stick
to it.
- The semantic usage comes from R and the field of statistics.
I do not intend to suggest we use R's evaluation model though - names would
still need to exist in the namespace and would call the `__sim__` method of the
first object (or `__rsim__` on the second). (To be complete, we'd also want
`__isim__` for in-place, `a ~= b` but I don't currently have a strong
motivating use-case for it.)
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/4TCCRH2AJDFGLYF25TKRNLQ5DZ3RCAYZ/
Code of Conduct: http://python.org/psf/codeofconduct/