@haskellru

Страница 205 из 1551
Ilya
21.02.2017
17:36:28
то есть подразумевается, что соответствие между Integer и Num есть

и вполне прямое кстати

Kit
21.02.2017
17:38:13
но в Num есть функция fromInteger
Она тоже через инстанс определяется

Ilya
21.02.2017
17:38:23
хорошо

Google
Ilya
21.02.2017
17:38:39
давай так

λ> :t 0 0 :: Num a => a

прокомментируй это

хотя ладно, давай проще ещё

? animufag ?
21.02.2017
17:40:29
instance Num Int where I# x + I# y = I# (x +# y) I# x - I# y = I# (x -# y) negate (I# x) = I# (negateInt# x) I# x * I# y = I# (x *# y) abs n = if n `geInt` 0 then n else negate n signum n | n `ltInt` 0 = negate 1 | n `eqInt` 0 = 0 | otherwise = 1 {-# INLINE fromInteger #-} -- Just to be sure! fromInteger i = I# (integerToInt i)

поискал таки

Ilya
21.02.2017
17:41:22
Integer - это инстанс Num, так? Умножение определяется в инстансе, так? Вот почему мы в ИНСТАНСЕ для Interger не можем определить умножение как нам хочется? В т.ч. и 0 * _ = 0

Kit
21.02.2017
17:41:43
λ> :t 0 0 :: Num a => a
В компиляторе используется контекст. Вот и весь комментарий

Ilya
21.02.2017
17:42:48
как и должно

потому что нехрен паттерн-матчить

но если бы захотели, то могли бы

Kit
21.02.2017
17:44:52
Integer - это инстанс Num, так? Умножение определяется в инстансе, так? Вот почему мы в ИНСТАНСЕ для Interger не можем определить умножение как нам хочется? В т.ч. и 0 * _ = 0
? может потому что дешевле вычислить чем поверить что ноль. Когда пишем 0*_=0 нужно проводить if условие. Даже если не дешевле такой код уже было бы сложно параллелить на видюхе из-за скрытого if. Я причин не знаю, но приведённых мной мне достаточно.

Google
Ilya
21.02.2017
17:46:04
всё правильно:) и я о том же

Ilya
21.02.2017
17:47:54
изначально ты утверждал, что нельзя определить (0 * _ = 0), потому что "не для всех числовых типов есть 0"

Kit
21.02.2017
17:48:53
изначально ты утверждал, что нельзя определить (0 * _ = 0), потому что "не для всех числовых типов есть 0"
Я утверждаю, что нецелесообразно такое запихивать в определение класса, на твой же вопрос почему так не делают.

Можно в инстанс запихать, но тоже никто не делает

Для integer

Ilya
21.02.2017
17:51:43
хах ну ок =)

@voidlizard spam

Dmitry
21.02.2017
18:03:28
Пингуйте @qnikst я на телефоне

Asyan раз

На телефоне тоже работает

Данеая стилистика беседы не приветствуется

Хорошо

Поправка: не сквернословь как мудак

Kit
21.02.2017
18:08:35
Походу в школе флуда и троллинга сегодня практический экзамен.

Чёт их много

Dmitry
21.02.2017
18:09:32
Извиняем. И раз.

Кучно пошли

Ilya
21.02.2017
18:13:49
Затаился ?

Тёма
21.02.2017
18:14:36
Тут страшно писать теперь.

Google
Dmitry
21.02.2017
18:16:01
Страх убивает разум

? animufag ?
21.02.2017
18:28:07
не было 40 минут. интересно что тут было

Alexander
21.02.2017
18:31:43
In type theory, a theory within mathematical logic, the bottom type is the type that has no values. It is also called the zero or empty type, and is sometimes denoted with falsum (⊥). The bottom type is frequently used for the following purposes: To signal that a function or computation diverges; in other words, does not return a result to the caller. As an indication of error; this usage primarily occurs in theoretical languages where distinguishing between errors is unimportant.

сорри я только пришёл

Alexander
21.02.2017
18:43:21
bottom не может быть значением

нету значения которое = bottom

Ilya
21.02.2017
18:44:17
Ну хорошо, не значение

Alexander
21.02.2017
18:44:26
bottom (отсуствие значения) населяет все lifted типы

Ilya
21.02.2017
18:44:30
Так как нет конструктора

Alexander
21.02.2017
18:44:38
или т.к. не завершается

Ilya
21.02.2017
18:45:14
void из моего примера разве не имеет конкретный тип?

Alexander
21.02.2017
18:45:16
data S = S (forall a. a) внутри S тоже bottom ?

эм.. я сказал отсутсвие значения, тут вопрос "разве не имеет конкретный тип"

а стоп, в цитатах запутался

Admin
ERROR: S client not available

Alexander
21.02.2017
18:46:17
в любом lifted типе есть _|_

т.е. может быть отсуствие значения

Ilya
21.02.2017
18:46:31
С этим не спорю

Google
Ilya
21.02.2017
18:48:33
Хорошо, то есть если функция невычислима, то мы просто говорим, что она возвращает bottom этого типа?

Любая функция

Вроде понял

Просто мне что интересно

Можно определить два bottom разного типа, но при этом мы всё равно считаем их одинаковыми

? animufag ?
21.02.2017
18:55:47
bottom не может быть значением

bottom (отсуствие значения) населяет все lifted типы

незначение населяющее типы

ну в цитате выше боттом точно назван типом. тип без конструктора пускай будет боттом. а если есть невычислимое выражение, тип которого известен, то это уже не боттом?

Alexander
21.02.2017
19:07:09
ну то что пустое множество является подмножеством любого множества же никого не напрягает?

Ilya
21.02.2017
19:07:26
Никого

Немного напрягает, что могут быть равны элементы двух разных типов

Если это элемент - боттом

Но я уже начал привыкать

Alexander
21.02.2017
19:08:16
обчный intiial object =)

Kit
21.02.2017
19:12:56
В теории множеств пустое множество не имеет типа, поэтому оно является подмножеством любого множества.

Получается формально bottom не имеет типа

Artem
21.02.2017
19:17:33
Получается формально bottom не имеет типа
формально bottom имеет полифорфный тип (forall a. a)

Google
Alexander
21.02.2017
19:20:41
те которые содержат bottom ?

а нет

Страница 205 из 1551