Skip to content
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

if-elif statements break if there's no else #186

Open
jonbarron opened this issue Oct 23, 2023 · 1 comment
Open

if-elif statements break if there's no else #186

jonbarron opened this issue Oct 23, 2023 · 1 comment
Assignees

Comments

@jonbarron
Copy link
Contributor

Environment

If you used latexify on the browser, fill the following items.

  • Browser: Google Chrome Version 118.0.5993.96
  • Frontend:Google Colaboratory

Description

If you try to latexify a function that contains an if/elif statement, it will terminate with an error message of "LatexifySyntaxError: Multiple statements are not supported in If nodes." unless there is an else statement. This is awkward, because there are many things that someone would want to express with if/elif statements that look awkward when rendered using a else statement instead of an elif. Here's an example:

image

Reproduction

Here's that code:

@latexify.function(use_math_symbol=True)
def fn(x):
  if x < 0:
    return -1
  elif x == 0:
    return 0
  elif x > 0:
    return 1

fn

Expected behavior

I'd like to be able to do something like
image

but without that placeholder "else: return None" bit at the end, which is currently necessary.

@odashi
Copy link
Collaborator

odashi commented Oct 24, 2023

I think this should be a part of fall-through supports. Related issue: #100

The current implementation expects that every if clause has a corresponding else, i.e., every condition should be dispatched to exactly one descendant of the if-elif-else tree. This would be natural in terms of math writing, but yeah it is also a bit frustrating in Python.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants