@haskellru

Страница 357 из 1551
Donat
16.08.2017
19:42:54
хотя баги там есть такие, что лицорука, да

Max
16.08.2017
20:16:18
мы используем хаскельную обёртку вокруг ansible, например
Вот вы извращенцы. А чего бы не просто через ssh-клиент?

Я это сейчас на Э-ке пишу, песня просто.

Arseniy
16.08.2017
21:15:56
интересно кстати, devops haskell кто-нибудь видел?
У нас девопс в основном на nix, но есть немного на Haskell https://github.com/input-output-hk/iohk-ops/blob/ea594d09d217381d62c057f4a5742a494dddb827/iohk/CardanoCSL.hs

Google
Max
16.08.2017
21:40:08
Прикольно

kana
16.08.2017
22:26:45
Когда-то мне тут советовали сервант, но я испугался не смотря даже на него и взял Скотти. А зря, сервант действительно крут и достаточно и при этом просто работает

Den
16.08.2017
23:21:09
$ ps aux |grep xmo den 21720 1.1 0.1 1074307988 28352 ? Sl авг10 111:19 /home/den/.xmonad/taffybar den 21721 0.0 0.7 1073930920 117500 ? S авг10 4:49 /home/den/.xmonad/xmonad-x86_64-linux Только сейчас заметил. Это норм? =)

Занятно. Посмотрел на сервере, где backend крутится - то же самое

Vadim
16.08.2017
23:35:03
значит норма

Den
16.08.2017
23:36:51
оччень странно

Donat
17.08.2017
04:57:35
Я это сейчас на Э-ке пишу, песня просто.
а темплейтинг чем делаешь (или не делаешь)?

Alexander
17.08.2017
05:11:41
@verrens что именно не нравится?

1T виртуальной памяти? нормально

Donat
17.08.2017
05:15:48
1T виртуальной памяти? нормально
кстати, я разобрался что за проблема у меня была с out of memory при сборке при наличии свопа. причина была в отключеном LPAE на 32 битной системе.

вот я голову поломал тогда!

Max
17.08.2017
06:36:23
а темплейтинг чем делаешь (или не делаешь)?
Пока регуляркой, а там erlydtl подцепить недолго.

Vladimir
17.08.2017
08:45:48
А насчет офисного чата. Это тот еще баян. Называется - зачем на работу перся?

Google
kana
17.08.2017
14:31:18
Есть какая-то возможность делать kind synonyms?

типа kind Type = *

Yuriy
17.08.2017
14:51:33
да, словом type

kana
17.08.2017
14:55:30
type Type = * Not in scope: type constructor or class `*' Operator applied to too few arguments: *

Dmitry
17.08.2017
14:57:56
@kana_sama Посмотри, как это сделано здесь: https://www.stackage.org/haddock/lts-9.1/base-4.9.1.0/Data-Kind.html#t:Type

Yuriy
17.08.2017
15:01:04
а лучше import Data.Kind (Type) и не морочьте голову

@kana_sama Посмотри, как это сделано здесь: https://www.stackage.org/haddock/lts-9.1/base-4.9.1.0/Data-Kind.html#t:Type
сам смотрел? там весьма заковыристо сделано: -- | The kind of types with values. For example @Int :: Type@. type Type = TYPE 'LiftedRep -- | A backward-compatible (pre-GHC 8.0) synonym for 'Type' type * = TYPE 'LiftedRep

Alexander
17.08.2017
15:09:46
если вопрос был в том, как делать синонимы, то ответ @chshersh максимально точен

в модуле можно посмотреть как это сделано

поскольку у нас нету информации является ли пример выше конечной задачей @kana_sama

или это минимальный пример

kana
17.08.2017
15:10:46
Alexander
17.08.2017
15:10:46
можно конечно рассказать почему делается так как делается, но я не могу на это ответить например

Yuriy
17.08.2017
15:11:55
в модуле можно посмотреть как это сделано
но там нет синонима на самом деле, нельзя посмотреть

Alexander
17.08.2017
15:12:30
Type не синоним для TYPE 'LiftedRep o.O?

и *

kana
17.08.2017
15:12:46
ну вообще для синонима кайндов требуется TypeInType

Alexander
17.08.2017
15:12:49
значит я чего-то не понимаю

Yuriy
17.08.2017
15:13:01
Type определяется не через синоним для *

Alexander
17.08.2017
15:13:43
не могу проследить

Google
Alexander
17.08.2017
15:54:41
@cblp_su вообще я согласен, у мне трюк оттуда сходу не удалось повторить

Даня
17.08.2017
16:34:05
в старых версия библиотеки heist была полезная функция (##) :: Text -> s -> Splices s, которая в более новых версиях библиотеки пропала. никто не подскажет альтернативу?

Aleksey
18.08.2017
07:20:39
@teenage_mutant_ninja_turtle предположу, что имеется в виду: https://hackage.haskell.org/package/map-syntax-0.2.0.2/docs/Data-Map-Syntax.html#v:-35--35-

Как говорится в Heist.SpliceAPI Deprecated: Use Data.Map.Syntax from the map-syntax package instead

Так что ## из map-syntax должна подойти, ибо type Splices s = MapSyntax Text s и (##) :: k -> v -> MapSyntax k v

Даня
18.08.2017
07:25:52
Aleksey, спасибо!

kana
18.08.2017
09:39:31
Что означает Refl? То есть это сокращение от Reflection? Тогда как это связано с равенством типов?

Опечатка, да, исправил

Index
18.08.2017
09:41:33
Это не связано с reflection

это от слова reflexive (https://en.wikipedia.org/wiki/Reflexive_relation)

kana
18.08.2017
09:42:05
а, все, спасибо, теперь понятно, с этим термином знаком

Pavel
18.08.2017
09:42:14
Опечатка, да, исправил
Не знаю как хаскеле В идрисе это тип который означает равенство Refl : a -> a Refl x = x и его название от свойства рефлексивности

Yuriy
18.08.2017
09:43:43
@int_index, а как это связано с рефлексивностью? по-моему, это как раз рефлексия, то есть перенос информации из типов в значения

Index
18.08.2017
09:44:17
Нет

Это связано с рефлексивностью напрямую, потому что любой тип равен сам себе

Refl это witness для рефлексивности равенства

Pavel
18.08.2017
09:45:07
@int_index, а как это связано с рефлексивностью? по-моему, это как раз рефлексия, то есть перенос информации из типов в значения
Отношение равенства является отношением эквивалентности А для него характерны три свойства симметричность, рефлексивность и транзитивность

Index
18.08.2017
09:45:47
Пруфтёрм

Google
Yuriy
18.08.2017
09:46:09
Pavel
18.08.2017
09:46:28
да, но разве рефлексивность что-то даёт нам тут?
x = x это рефлексивность по своему определению

Пруфтёрм
спасибо

Yuriy
18.08.2017
09:47:07
x = x это рефлексивность по своему определению
спасибо, но @int_index уже объяснил всё

Yuriy
18.08.2017
09:50:14
я просто думал, что это "рефлексия" в том смысле, информация о типе передаётся из компилятора в программу

Index
18.08.2017
09:52:06
это называется relevance

Index
18.08.2017
09:52:54
Ну и в тотальном языке с axiom K вполне можно Refl делать нерелевантным (но не в Haskell)

Alex
18.08.2017
09:53:06
ну и = инфиксный

Alex
18.08.2017
09:54:35
Отношение равенства является отношением эквивалентности А для него характерны три свойства симметричность, рефлексивность и транзитивность
симметричность и транзитивность там есть: sym : {left:a} -> {right:b} -> left = right -> right = left sym Refl = Refl trans : {a:x} -> {b:y} -> {c:z} -> a = b -> b = c -> a = c trans Refl Refl = Refl

Index
18.08.2017
09:54:58
я просто думал, что это "рефлексия" в том смысле, информация о типе передаётся из компилятора в программу
Если игнорировать боттомы, то надо понимать, что Refl это просто () в рантайме, а оттого он ничего "в программу" не передеает

Alex
18.08.2017
09:55:58
да, если брать идрис, то доказательства он везде старается стирать

Pavel
18.08.2017
09:56:48
Alex
18.08.2017
09:57:02
http://docs.idris-lang.org/en/latest/reference/erasure.html

Index
18.08.2017
09:57:09
Значит он не передает пруфтермы, а довольствуется фактом их наличия

Google
Index
18.08.2017
09:57:20
Для производительности делается

Вот DH так не сможет, кстати.

Поэтому есть все шансы, что DH-код будет медленнее, чем наивный код без пруфов

а в Idris, гипотетически, добавить какое-то доказательство может быть бесплатным с точки зрения рантайма

Pavel
18.08.2017
09:59:19
а имеет смысл доказательства оставлять прямо в реализации в таком случае?

Index
18.08.2017
09:59:39
в DH есть

Pavel
18.08.2017
09:59:55
какой, если это замедляет код?

Index
18.08.2017
10:00:17
Такой, что ты не можешь написать let x = x in x :: (Int :~: Bool)

Точнее, можешь, но уйдешь в цикл на матчинге, а не получишь unsafeCoerce

Тоталити-чекер нам ведь никто не обещал завезти.

Pavel
18.08.2017
10:01:07
а спасибо

Denis
18.08.2017
10:02:31
Интересно а тотальность и ленивость могут быть вместе?

Index
18.08.2017
10:02:38
Разумеется

Alex
18.08.2017
10:03:15
тотальность типа гарантирует, что каким порядком ни вычисляй, получишь одно и то же

Index
18.08.2017
10:03:27
Для тотальных программ ленивость/строгость — это просто разные стратегии вычисления. А с корекурсией можно и типичный юзкейс ленивости с бесконечными структурами покрыть

Denis
18.08.2017
10:03:36
Ну это понятно, но в лени может быть не так

Вот например боттом

Или зацикливание

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