Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Support Any as an alias for object to describe a default typeclass implementation #307

Open
@anatoly-scherbakov

Description

Context. In order to define a default implementation (the one used if no other implementation matches), we currently have to write something like this:

from classes import typeclass
@typeclass
def render(data_value) -> str:
 """Render a data value nicely."""
@render.instance(int)
def _render_int(data_value: int) -> str:
 return f'This is an integer: {data_value}'
@render.instance(object)
def _render_int(data_value: object) -> str:
 return f'No idea what this is: {data_value}'
assert render('BADOOM') == 'No idea what this is: BADOOM'

(this script should be runnable as-is.)

Decision. Support Any as a special case to replace object:

@render.instance(Any)
def _render_int(data_value: Any) -> str: # type: ignore
 return f'No idea what this is: {data_value}'

Consequences.

  • Pro: The code will look a little bit more straightforward;
  • Contra: mypy with common settings might be unhappy about Any being used, but that can be silenced with type: ignore I suppose.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

        AltStyle によって変換されたページ (->オリジナル) /