eqwalizer
eqwalizer copied to clipboard
Issue with maybe expr
trafficstars
This simplified code:
-module(t).
-feature(maybe_expr, enable).
-export([mult2/1]).
-spec mult2(string()) -> {ok, string()} | {error, bad_int}.
mult2(Str) ->
maybe
{ok, Int} ?= convert_to_int(Str),
{ok, integer_to_list(Int*2)}
end.
-spec convert_to_int(string()) -> {ok, integer()} | {error, bad_int}.
convert_to_int(Str) ->
try list_to_integer(Str) of Int ->
{ok, Int}
catch _:_ -> {error, bad_int}
end.
leads to issue:
error: incompatible_types
┌─ src/t.erl:9:22
│
9 │ {ok, Int} ?= convert_to_int(Str),
│ ^^^^^^^^^^^^^^^^^^^
│ │
│ convert_to_int(Str).
Expression has type: {'ok', number()} | {'error', 'bad_int'}
Context expected type: {'ok', string()} | {'error', 'bad_int'}
See https://fb.me/eqwalizer_errors#incompatible_types
│
{'ok', number()} | {'error', 'bad_int'} is not compatible with {'ok', string()} | {'error', 'bad_int'}
because
{'ok', number()} is not compatible with {'ok', string()} | {'error', 'bad_int'}
because
at tuple index 2:
{'ok', number()} is not compatible with {'ok', string()}
because
number() is not compatible with string()
Everything works well If i replace it with equivalent case expression:
-spec mult2(string()) -> {ok, string()} | {error, bad_int}.
mult2(Str) ->
case convert_to_int(Str) of
{ok, Int} ->
{ok, integer_to_list(Int*2)};
Other ->
Other
end.
Deploy Preview for label-studio-docs-new-theme canceled.
| Name | Link |
|---|---|
| Latest commit | 264d10d80e5285ae9ec42e1988db463092e2e084 |
| Latest deploy log | https://app.netlify.com/sites/label-studio-docs-new-theme/deploys/6685f93d8c18f100086e2588 |
Deploy Preview for heartex-docs canceled.
| Name | Link |
|---|---|
| Latest commit | 264d10d80e5285ae9ec42e1988db463092e2e084 |
| Latest deploy log | https://app.netlify.com/sites/heartex-docs/deploys/6685f93d818eab0008063918 |
This PR is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 10 days.
This PR is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 10 days.
This PR was closed because it has been stalled for 10 days with no activity.