-
-
Notifications
You must be signed in to change notification settings - Fork 125
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implicit application doesn't work if the function's first token is a string literal #821
Comments
I had disabled this exact case for some reason because it was causing some parsing inconsistencies and I didn't think anyone was using it, but reenabling it now doesn't seem to break any tests anymore, and I don't think this is super confusing or anything, so I'll bless this syntax as allowed. This should be reenabled as of |
Ah, well to be fair I've come across it due to code golf, so I'm not the perfect example of "everyday usage"... 😂 Thanks a lot!!! |
See Coconut's [documentation](http://coconut.readthedocs.io/en/develop/DOCS.html) for more information on all of the features listed below. Language changes: * #814: Changes to statement lambda scoping rules, including capturing names introduced in the surrounding expression. * #618: Changes to handling of pattern-matching function defaults including support for e.g. `match def f(x, y=x) = (x, y)`. * #809: New array concatenation implicit partials (e.g. `[. ; a]`). * #823: New `(x := .)` implicit partial syntax (only available in pipes). * #807: New `lift_apart` built-in combinator. * #813: New `(if)` operator function. * #826 (thanks @JayXon!): Better universalization and `fmap` support for `bytes` and `bytearray`. * #816: Support for `xarray` to match existing `numpy`/`pandas` support. * #817: New `to` argument to `all_equal`. * #821 (thanks @GolfingSuccess!): Expanded implicit function application syntax to support string literal methods. Compiler changes: * #799: `coconut-run` and `coconut --run` now work on packages rather than just files. * #812: Better formatting of Coconut exceptions. Bugfixes: * #810: Fixed an issue compiling certain syntax constructs in the Coconut Jupyter kernel. * #818, #825 (thanks @kg583, @dokutan!): Fixed parsing of different Unicode line break characters. * #822 (thanks @JayXon!): Fixed parsing of Unicode backward pipe operators. * #819, #820 (thanks @kg583!): Fixed some incompatibilities between Python and Coconut syntax.
This snippet doesn't work as I'd expect it to:
I would expect it to print
1
; instead, it fails like this:An interesting behavior appears if I try it in the REPL:
Notice the empty line above the error: it actually waited for me to "continue" writing, so I just pressed Enter and the error appeared.
If I add parentheses, as in
print(('abc').find x)
orprint(('abc'.find) x)
, it does print1
.Edit: This blocking behavior also occurs if I type something nonsensical, like
('abc'.'find') x
, or just'abc'.'find'
(that last one spits aCoconutSyntaxWarning
before blocking, but then fails anyway).The text was updated successfully, but these errors were encountered: