@haskellru

Страница 778 из 1551
sherzod
26.01.2018
13:00:49
то есть кортежи (таплы?) это базовый элемент языка?

Kirill
26.01.2018
13:01:39
Свагер же ещё в том году переименовали...

Leonid
26.01.2018
13:02:41
то есть кортежи (таплы?) это базовый элемент языка?
Это анонимный тип product (как это по русски?)

В общем у нас тут есть законники ЯП, пусть отдуваются

Google
sherzod
26.01.2018
13:03:13
Я просто не могу понять, вот не имея таплов я могу их построить используя ADT

A64m
26.01.2018
13:03:17
синтаксический сахар для обычных АДТ с одним конструктором

A64m
26.01.2018
13:03:51
да. Tuple2 a b, Tuple3 a b c и так далее

Слава
26.01.2018
13:04:05
Свагер же ещё в том году переименовали...
Во что? Я вот прямо сейчас на нем пишу под AWS Gateway API и плююсь

sherzod
26.01.2018
13:04:06
ааа пф. туплю конечно

A64m
26.01.2018
13:04:57
т.е. названия конструкторов-то у них и после рассахаривания (,) (,,), сахаром является вот это вот применение к параметрам которое не (,) 1 True а (1,True)

sherzod
26.01.2018
13:07:34
о это сразу ответило на мой следующий вопрос) хотел узнать "синтаксический элемент" ли языка возможность ставить нечто закрывающее (как ] или ) )

A64m
26.01.2018
13:08:23
да, для простого труженика объявление таких конструкций недоступно

sherzod
26.01.2018
13:08:41
ясно, спасибо

Pig
26.01.2018
13:17:06
Я не должен писать такие вещи, но меня серьезно раздражает наличие Tuple3 & co в языке

Google
Pig
26.01.2018
13:17:52
Только Pair и Unit

(Сначала я написал в грубой форме)

Denis
26.01.2018
13:18:15
Только Pair и Unit
и будешь делать Pair + Pair чтобы Tuple3 сделать?)

Pig
26.01.2018
13:18:23
Да

A64m
26.01.2018
13:18:35
Только Pair и Unit
представление в памяти не особо хорошее получается

Denis
26.01.2018
13:18:38
Да
ну это понятно)

есть только 1, 0, +, *

и Fix

Pig
26.01.2018
13:19:45
Зато потом можно добраться до любого элемента кортежа только с помощью fst и snd, а нормальное представление в памяти ВМ инженеры прикрутят.

A64m
26.01.2018
13:20:24
даже безоверхедное может быть

не в смысле компайл-тайм, конечно

A64m
26.01.2018
13:24:36
так для этого и надо чтоб они из вложенных пар состояли

Denis
26.01.2018
13:25:42
A64m
26.01.2018
13:27:00
дженерик представление-то как раз такое и есть из пар пар

Google
A64m
26.01.2018
13:29:50
Prelude GHC.Generics> from (1,True,"") M1 {unM1 = M1 {unM1 = M1 {unM1 = K1 {unK1 = 1}} :*: (M1 {unM1 = K1 {unK1 = True}} :*: M1 {unM1 = K1 {unK1 = ""}})}}

Nikita
26.01.2018
13:50:07
Привет

А чем вы UML рисуете ?

A64m
26.01.2018
13:50:50
а мы рисуем?

Aleksey
26.01.2018
13:50:56
PlantUML

Nikita
26.01.2018
13:52:16
http://plantuml.com/latex ?

Alexander
26.01.2018
13:53:51
plantuml и можно сразу в картинки

Nikita
26.01.2018
13:54:32
ну желательно все же хранить в сорцах + Makefile

Alexander
26.01.2018
13:55:04
у него же текстовый файлик на входе

если я не путаю с другим

A64m
26.01.2018
13:55:34
да

Антон
26.01.2018
15:47:23
да. Tuple2 a b, Tuple3 a b c и так далее
Кстати, а как в Хаскеле обходят непараметризованность кортежей по длине? Юзают TH?

A64m
26.01.2018
15:54:40
да обычно никак не обходят, оно того не стоит

Denis
26.01.2018
15:57:17
А в чём "так себе" выражается?
Сомнительные решения по части интерфейсов и крайне opinionated

Anatolii
26.01.2018
16:08:32
{-# OPTIONS_GHC -F -pgmF autoexporter -optF --deep #-} А что происходит когда я вот такое в модуль вписываю? Компилятор в этом месте вызывает executable просто?

Denis
26.01.2018
16:08:56
да

Anatolii
26.01.2018
16:09:15
Спасиб

Google
Denis
26.01.2018
16:09:26
во время компиляции используется плагин autoexplorer

Anatolii
26.01.2018
16:09:42
Да я в его доках и нашел этт

Просто стало интересно что там внутрях происходит

-F -pgmF это флаги для компилятора?

A64m
26.01.2018
16:12:26
https://hackage.haskell.org/package/tuple
отличный пример как не обходят

Антон
26.01.2018
17:34:18
Народ, есть такой код: shift = go where go [] = [] go (x:xs) = xs ++ [x] Как выглядит эквивалентный код для вектора?

Пробовал так: shift' = uncurry (flip V.snoc) . (&&&) V.head id . V.splitAt 1 , но так не компилится

Окей, перестал задрачивать на point-free и переписал в виде shift' x = V.snoc (V.tail x) (V.head x)

Admin
ERROR: S client not available

Aleksey
26.01.2018
17:40:07
(++) . tail <*> (:[]) . head

> (++) . tail <*> (:[]) . head $ "123" "231"

V.snoc . V.tail <*> V.head в случае вектора

Антон
26.01.2018
17:43:09
V.snoc . V.tail <*> V.head в случае вектора
/me пытается осознать смысл <*> применительно к вектору

Yuriy
26.01.2018
17:43:30
не к вектору

Антон
26.01.2018
17:43:42
А к чему?

Aleksey
26.01.2018
17:43:46
это инстанс аппликатива для функции

Denis
26.01.2018
17:43:55
к функции

Aleksey
26.01.2018
17:44:03
f <*> g = \x -> f x (g x)

Yuriy
26.01.2018
17:44:07
V.head — функция

Антон
26.01.2018
17:44:09
Ну ок. В аппликативах я всё ещё плаваю

Google
Антон
26.01.2018
17:44:26
Denis
26.01.2018
17:44:27
можешь и liftA2 V.snoc V.tail V.head

Yuriy
26.01.2018
17:45:22
не мучайте человека аппликативами

Aleksey
26.01.2018
17:45:38
это же отличный повод посмотреть и разобраться!

Yuriy
26.01.2018
17:45:41
тем более, такими

Aleksey
26.01.2018
17:46:49
Тогда м.б. не стоит и в pointfree глубоко лезть и обмазываться стрелочными *** да &&&, пока плаваешь в аппликативах :)

Denis
26.01.2018
17:47:03
ага

Leonid
26.01.2018
17:47:12
Нет.

Aleksey
26.01.2018
17:47:36
"С pointfree всё лучше" ?

Leonid
26.01.2018
17:47:47
Вот вы это написали, и в ту же секунду с канала человек вышел

Я видел как тикнул каунтер

Aleksey
26.01.2018
17:49:20
"Если в pointfree появились flip и uncurry, то чтоит задуматься, cтоит ли"

Антон
26.01.2018
17:49:36
Тогда м.б. не стоит и в pointfree глубоко лезть и обмазываться стрелочными *** да &&&, пока плаваешь в аппликативах :)
Ну, применительно к функциям у (***) и (&&&) смысл достаточно прозрачный, ИМХО

Aleksey
26.01.2018
17:50:14
Вот только это не комбинаторы для функций, это комбинаторы для стрелок, а то что они с функциями работают - частный случай. Но из-за фанатизма вокруг бесточечной записи этими операторами злоупотребляют в т.ч. и новички, что, ИМХО, не идёт на пользу пониманию и формирует неправильные привычки

Yuriy
26.01.2018
17:50:30
Denis
26.01.2018
17:53:31
Не хочу юзать секции композиции
http://fprog.ru/2010/issue4/denis-moskvin-compositions-sections/

Антон
26.01.2018
17:57:54
http://fprog.ru/2010/issue4/denis-moskvin-compositions-sections/
Читал. Всё равно не хочу

Arthur
26.01.2018
18:03:33
Окей, перестал задрачивать на point-free и переписал в виде shift' x = V.snoc (V.tail x) (V.head x)
Если так уж сильно нравится point-free style, но результат не компилится, сконвертировать выражение можно здесь http://pointfree.io/ . Но, как по мне, это сильно ухудшает читабельность кода.

Alexander
26.01.2018
18:03:43
код не нужен

он врет

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