169 похожих чатов

Вопрос. Есть ли возможность так задать спек, чтобы он разрешал

вот такие два варианта вызова функции?
@spec foo(a, b) :: c
@spec foo(b, a) :: c

Вот такое не очень хорошо:
@spec foo(a | b, a | b) :: c
так как разрешает вызов с двумя параметрами одного типа.

9 ответов

12 просмотров

Такой возможности нет

Евгений- Автор вопроса

defmodule Demo do @spec foo(integer(), float()) :: float() @spec foo(float(), integer()) :: float() def foo(a, b) when is_integer(a) and is_float(b) do do_foo_if(a, b) end def foo(a, b) when is_float(a) and is_integer(b) do do_foo_fi(a, b) end @spec do_foo_if(integer(), float()) :: float() defp do_foo_if(a, b) do a + b end @spec do_foo_fi(float(), integer()) :: float() defp do_foo_fi(a, b) do a + b end end Вот на такое почему-то не ругается что есть overlaping domains.

Евгений
Печаль.

Я бы подумал о том зачем это нужно, очень похоже на XY, потому что я с таким вообще никогда не сталкивался. В чём корень проблемы?

Евгений- Автор вопроса
Lama Lover
Я бы подумал о том зачем это нужно, очень похоже н...

Да нет особой проблемы на самом деле. Просто дал функциям разные имена и все.

Евгений
Да нет особой проблемы на самом деле. Просто дал ф...

Во, это уже круто. Просто меня смущает, что это очевидно какой-то оператор из серии умножения вектора на число, который приводится к умножению вектора на вектор

Евгений- Автор вопроса
Lama Lover
Во, это уже круто. Просто меня смущает, что это оч...

Это операция вычитания над множествами хранящимися в ets и в MapSet.

Евгений
Это операция вычитания над множествами хранящимися...

А почему тогда нельзя из мапсета вычитать мапсет, например?

Евгений- Автор вопроса
Lama Lover
А почему тогда нельзя из мапсета вычитать мапсет, ...

Для этого есть MapSet.difference(), а вызов моей функции с такими аргументами говорит, что что-то явно попутано.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта