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

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

Leonid
26.01.2018
13:02:41
В общем у нас тут есть законники ЯП, пусть отдуваются

Google

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

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

Leonid
26.01.2018
13:03:50

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

Слава
26.01.2018
13:04:05

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

Leonid
26.01.2018
13:04:35

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 в языке

Denis
26.01.2018
13:17:35

Google

A64m
26.01.2018
13:17:48

Pig
26.01.2018
13:17:52
Только Pair и Unit
(Сначала я написал в грубой форме)

Denis
26.01.2018
13:18:15

Pig
26.01.2018
13:18:23
Да

A64m
26.01.2018
13:18:35

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
даже безоверхедное может быть
не в смысле компайл-тайм, конечно

Denis
26.01.2018
13:22:06

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

Denis
26.01.2018
13:25:42

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

Denis
26.01.2018
13:27:58

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 = ""}})}}

Denis
26.01.2018
13:30:38

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

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

Denis
26.01.2018
15:57:17

Yuriy
26.01.2018
16:01:07

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

Антон
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

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

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

Yuriy
26.01.2018
17:50:30

Denis
26.01.2018
17:53:31

Антон
26.01.2018
17:57:54

Arthur
26.01.2018
18:03:33

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