
Alexander
15.09.2017
08:39:35
let divideBy2 = (/ 2)
можно
ну напиши 2 - 5

Index
15.09.2017
08:39:54

Google

Alexander
15.09.2017
08:39:58
если кто будет ругаться, скажи, что я разрешил

Sherzod
15.09.2017
08:40:16

Alexander
15.09.2017
08:40:41
с минусом все везде плохо

Dmitry
15.09.2017
08:40:53
где-то просто сделали так
~2

Alexander
15.09.2017
08:40:55
т.к. тяжело отличать отрицательную константу от функции
впрочем выстрелить в ногу тяжело, т.к. там типы не сходиться будут

Index
15.09.2017
08:43:41
Если не добавить самый прекрасный инстанс для Num
(Num a, Applicative f) => Num (f a)

Alexander
15.09.2017
08:55:19
это да

Yuriy
15.09.2017
09:28:59

Sherzod
15.09.2017
09:29:31

Evgeniy
15.09.2017
09:47:31
а есть гденибудь таблица по нотации обычно используемой в теории категорий - типа чтобы можно было по быстрому понять чем ∆ отличается от△? а то читал вчера папер и гдето на второй странице уже начал забывать нотацию с первой

Kit
15.09.2017
09:49:20
Обычно каждый автор использует свою нотацию, которую объявляет в начале книги. Если это статья, видимо, лучше посмотреть те книги на которые ссылается автор

Google

Evgeniy
15.09.2017
09:52:54
видимо будет проще просто на бумажку выписать, чем пытаться догадатся что из списка литературы было основными источниками

Alex
15.09.2017
11:32:36
я склоняюсь к варианту "Хаскель" потому что это вариант имени Иезекиль
Личное имя Йехезкель (в идише — Хацкл, Ехескл) распространено среди евреев.
хацкл тоже ок

Олег
15.09.2017
11:34:13
Остановимся на Хацкл

Dmitry
15.09.2017
11:34:20
Х-л.

Leonid
15.09.2017
11:35:13
Во имя Саймона, Пейтона и Джонса

Vladimir
15.09.2017
11:40:56
вы еще не видели дискуссий про "фронтенд", "фронт-енд", "frontend" и т.д
а, и еще конечно "фронтэнд"
вот я лишь за то чтобы в письменных источниках название Haskell не переводили
а в устной речи можно как угодно, в конце концов тусовочки со своими диалектами никто не отменял))
а так спор вообще бессмысленный, потому что и то, и другое норм тайпчекается)

illiatshurotshka❄️
15.09.2017
11:42:57
haskal

Anton
15.09.2017
11:44:51

Andrew
15.09.2017
11:44:51
Хаски

Alex
15.09.2017
11:45:15
бекендорф

? animufag ?
15.09.2017
11:45:23
Аскул
Или аскал

Aleksey
15.09.2017
11:46:12
Хаскаль (Блез)

Leonid
15.09.2017
11:46:47
Монойды в хаскале

Google

Олег
15.09.2017
11:47:21
Фунгтогы в Хацкле

Alexander
15.09.2017
11:50:56
товарищи

Dmitry
15.09.2017
11:51:06
многовато флуда, да?

Alexander
15.09.2017
11:51:06
у меня вопрос
очень
давайте про haskell
у меня проблема
я ввожу вещи в ghci и ничего не понимаю
Prelude> let x = (id True, id undefined)
Prelude> :sprint x
x = _
Prelude> let x = (True, id undefined)
Prelude> :sprint x
x = _
Prelude> let x = (True, undefined)
Prelude> :sprint x
x = (,) True _
Prelude> let x = (True, undefined::Int)
Prelude> :sprint x
x = (True,_)
Prelude> let x = (True, False)
Prelude> :sprint x
x = (True,False)
кто-нить может рассказать почему вывод именно такой, какой он есть

illiatshurotshka❄️
15.09.2017
11:54:03
ленивость?

? animufag ?
15.09.2017
11:56:34
Ну видимо если бы там был не булеан а какая-нибудь дата то
(,) Дата Дата
Хотя не. Наверное он дальше головы вообще не должен вычислять в любом случае

Alexander
15.09.2017
11:57:47
Prelude> let x = (Just 4, False)
Prelude> :sprint x
x = (Just 4,False)

? animufag ?
15.09.2017
11:58:01
Хех

Alexander
15.09.2017
11:58:06
ну нужно понимать, что тут константы ему их вычислять в общем-то незачем
но я не понимаю почему не (,) a b везде
хотя бы
допустим оптимизация или особенности sprint
но почему есть места где (,) a _

Google

Alexander
15.09.2017
11:59:01
и почему в тоже время есть (a,_)

Leonid
15.09.2017
11:59:11
а что sprint смотрит? вообще у undefined вроде свой тэг в рантайме.

Alexander
15.09.2017
12:00:19
тег смотрит
разницу между undefined и undefined::Int я вижу и понимаю

Leonid
15.09.2017
12:00:51
CAF?

Alexander
15.09.2017
12:00:55
но не понимаю почему она приводит к такой разнице вывода в sprint
ну undefined это :: forall a . a
undefined :: Int это :: Int
т.е. нету неявного параметра для типа
это как с let x = 5, sprint x x = _, и let x = 5 ::Int sprint x x = 5

ParkeT
15.09.2017
12:02:35
undefined это _|_, не?

Leonid
15.09.2017
12:02:49
особенности реализации? надо компилять в корку без оптимизашек и там понятно будет

Daniel
15.09.2017
12:06:04

Leonid
15.09.2017
12:06:18
(True, undefined) :: forall a . (Bool, a)
(True, undefined::Int) :: (Bool, Int)может просто в первом случае ему не хватает "пустой дикт"?

Alexander
15.09.2017
12:06:30
@optician_owl у тебя 4 это функция я поэтому Bool и использую

Leonid
15.09.2017
12:07:48
(,) True _ - это thunk с конструктором. а (True, _) - слабая голова

Alexander
15.09.2017
12:07:57
Prelude> let x = (Just (+(1::Int)), False)
Prelude> :sprint x
x = (Just _,False)
ну не thunk, а ap

Leonid
15.09.2017
12:09:02
ну да

Google

Alexander
15.09.2017
12:09:42
ладно лучше дальше работать буду
Leonid в общем-то тогда (Int,undefined::Int) и (Bool, Bool) сходятся
но какого черта он сразу whnf делает
там же код это let a = .. ; b = .. in (,) a b
жалко sprint thunk от функции не отличает

Leonid
15.09.2017
12:18:29
Whnf потому что CAF?

Alexander
15.09.2017
12:47:39
возможно

Michel
15.09.2017
13:43:55
/me зашел после js-работы в хачкель-чат, думал чего умного почитать, а там тоже undefined и жопа в вычислениях

illiatshurotshka❄️
15.09.2017
13:46:17
undefined это функция

Index
15.09.2017
13:54:10
undefined is not a function

Dmitry
15.09.2017
15:01:47
а какой сейчас последний ghc в nix ?

Rinat
15.09.2017
16:22:25
А кто-нибудь уже пользовал compact regions?

Index
15.09.2017
16:23:04
Я с ними экспериментировал. Они работают.
Но фатальный недостаток в том, что в компактный регион не могут входить функции.

Yuriy
15.09.2017
16:24:00

Rinat
15.09.2017
16:24:01
Такой уж ли фатальный?

Index
15.09.2017
16:24:30
Ну если у тебя в данных функций нет, то не такой уж.

Alexander
15.09.2017
16:24:45
@cblp_su сомнительно, особенно в ghci

Index
15.09.2017
16:25:33
Самое кайфовое, что можно на диск дампать структуры бесконечные, вроде xs = 1:xs
Оно умеет шейринг сохранять

Rinat
15.09.2017
16:27:31
Я просто сейчас не оч втыкаю как с ними работать.)
То есть вот есть компактный регион(compact b) ты к нему прибавил что-то типа a и получил IO (compact a)