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

Извиняюсь, не совсем понимаю, почему это работает. Int => Int

же не Nothing => Int
Int => Int <: Nothing => Int?

17 ответов

22 просмотра

Если я не путаю то Nothing является наследником всех классов (чтобы можно было выразить ситуацию когда метод выкинул исклчение)

Я так понимаю, здесь просто Lst[Nothing] приводится к Lst[A], а тип функции не меняется

жесть какая... f - параметр метода, то есть он в контравариантной позиции A => B - Параметр функции (A) тоже в контравариантной позиции Таким образом f: A => B - тут A в дважды контравариантной позиции, то есть в ковариантной позиции

χоρоший ☽☽☽ λисuчко
Извиняюсь, а почему жесть? х)

думать приходится. не люблю я это дело

Simon
жесть какая... f - параметр метода, то есть он в к...

Тогда почему это не работает? case class Sample[+A]() { def method[B](f: A => B) = ??? } val f: Nothing => Int = ??? Sample[Int]().method[Int](f) https://scastie.scala-lang.org/SwQrzrtiSeitPay9C2uAyw

Регіональний Секретар
Тогда почему это не работает? case class Sample[+A...

Ой, а ??? – это способ не писать тело функции, дабы проверить type checking?

Регіональний Секретар
Тогда почему это не работает? case class Sample[+A...

Тут с точностью до наоборот. В коде выше Int => Int используется там, где ожидается Nothing => Int - так можно из-за контравариантности. В вашем коде Nothing => Int используется там, где ожидается Int => Int - так нельзя

f: Int => Int - это функция, которая принимает целое число, и возвращает целое представим, что у нас есть PosInt <: Int, некое положительное подмножество целых, наша функция определена для любых целых чисел, значит для всех положительных как минимум, что скала позволяет записать как f: PosInt => Int таким образом для любого подмножества целых чисед f определена на нём, что соответствует некому суждению в нашей системе типов Nothing соответствует пустому подмножеству значений для множества значений любого типа и любая функция g: A => B определена на нём, что выражается как суждение g: Nothing => B таким образом, какую бы функцию f : A => B вы не передали, она так же является функцией Nothing => B, т.е. функцией с которой снимается необходимость обрабатывать что-либо, и нет никакого противоречия, в том чтобы передать её в метод, принимающий такой аргумент

мне проще так: Int => Int частный случай функции (подтип) Nothing => Int т.к. Nothing это подтип Int то Int более общий тип функция из более общего типа (Int) в менее общий (Int в этом случае, у нас они совпадают) будет подтипом функции

Simon
не верно

почему не верно? верно любая функция из более общего типа в менее общий тип это подтип

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта