Size: a a a

2021 March 12

AD

Anastasiya Dyachenko in pro.elixir
зашла поискать в typespec-ах и наткнулась на nonempty_maybe_improper_list()
источник

AD

Anastasiya Dyachenko in pro.elixir
что это за монстр
источник

АО

Алексей Овчинников... in pro.elixir
Lama Lover
У меня диалайзер ругается на Stream.t()
он на самом деле Enumerable.t
источник

АО

Алексей Овчинников... in pro.elixir
Anastasiya Dyachenko
зашла поискать в typespec-ах и наткнулась на nonempty_maybe_improper_list()
насколько я помню maybe_improper_list(A, B) означает либо терм типа B либо список с элементами типа A, но могу ошибаться. Насчёт конкретно твоего можно предположить, что это либо терм либо не-пустой список любых значений, что странно, поскольку намного проще написать просто any
источник

AD

Anastasiya Dyachenko in pro.elixir
да там примерно такое описание, просто выглядит как-то неуместно что-ли, хотя добавлено еще в 1.5
источник

АО

Алексей Овчинников... in pro.elixir
порылся в доках эрланга:

The following built-in list types also exist, but they are expected to be rarely used. Hence, they have long names:

 nonempty_maybe_improper_list() :: nonempty_maybe_improper_list(any(), any())
 nonempty_improper_list(Type1, Type2)
 nonempty_maybe_improper_list(Type1, Type2)


в общем говорят, что они редко используются )
источник

AN

Alexey Neyman in pro.elixir
А вообще для чего нужен improper list?
источник

АО

Алексей Овчинников... in pro.elixir
с ним проще описывать такие вещи, как iodata
источник

LL

Lama Lover in pro.elixir
Алексей Овчинников
он на самом деле Enumerable.t
Ну да, но я хочу указать что у меня возвращается именно Stream с элементами определённого типа
Я понимаю, что нужно Enumerable.t() использовать, но было бы удобнее пользоваться Stream.t()
источник

АО

Алексей Овчинников... in pro.elixir
тогда определяй свой тип
источник

АО

Алексей Овчинников... in pro.elixir
там не так то просто будет запихать тип элементов в него
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Lama Lover
Ну да, но я хочу указать что у меня возвращается именно Stream с элементами определённого типа
Я понимаю, что нужно Enumerable.t() использовать, но было бы удобнее пользоваться Stream.t()
А ты вообще встречал тип, у которого в скобках можно что-то указать не эрланговский?
источник

LL

Lama Lover in pro.elixir
Źmićer Rubinštejn
А ты вообще встречал тип, у которого в скобках можно что-то указать не эрланговский?
Я сам такие пишу, а что?
Всякие either(ok, error) или maybe(value)
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Я не разу такой не видел и не знал что так вообще можно делать
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Я честно говоря до сих пор не уверен что так можно
источник

AD

Anastasiya Dyachenko in pro.elixir
Źmićer Rubinštejn
Я честно говоря до сих пор не уверен что так можно
проверила, доках есть, тоже не встречала
`@type t(first, last) :: %Examples{first: first, last: last}`
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Ну и как потом сделать генерик спек?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
@spec new(first, last) :: Examples.t(first, last) сработает?
источник

AD

Anastasiya Dyachenko in pro.elixir
не, first и last это типы
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Ну я про это и говорю
источник