@haskellru

Страница 411 из 1551
Misha
18.09.2017
12:56:42
а чо, как будто что-то плохое

я вот очень хочу data внутри функций

illiatshurotshka❄️
18.09.2017
12:58:13
и во что оно будет превращаться?

Yuriy
18.09.2017
12:58:37
да, в Скале это плохое. так можно легко обратиться к неинициализированной переменной

Google
Ilya
18.09.2017
12:58:52
а вот кстати, по-моему в идрисе над do-нотацией как-то поиздевались^W улучшили?

расскажите, кто в курсе

че там

Vasiliy
18.09.2017
13:00:52
можно сказать, там по-дефолту включён RebindableSyntax

kana
18.09.2017
13:01:02
Тож интересно. Знаю, что можно как-то самому определять поведение + всякие something x in y работают с до как лет do let x = 1 rewrite z ..

Alexander
18.09.2017
13:02:24
@Masteroid можно определить (») для своего типа

Rinat
18.09.2017
13:03:32
@HaskellMouse ты уже с настройками GC игрался?
Да, выставил как рекомендует разработчик Accelerate.

Alexander
18.09.2017
13:04:14
ну можно для всякой дурости типа моноид через do: do "aa" "bb" "aa,bb"

я думаю @voidlizard бы обрадовался, ему я помню приходилось часто делать monad только ради того, чтобы do-notation был, например в emut-fat

плюс для отладки можно использовать, можно пример в ditrsibuted-process-test посмотреть, там автоматом лог событий пишется

Aleksey
18.09.2017
13:05:42
Э... ApplicativeDo же, не?

Alexander
18.09.2017
13:07:04
когда-то его не было

Google
Alexander
18.09.2017
13:07:33
тем более если у тебя например Monoid, то MonoidDo уже нет

Aleksey
18.09.2017
13:08:08
когда-то его не было
Вроде бы он довольно давно есть, только раньше он был в виде ado

У моноида же ассоциативность, do низзя

Alexander
18.09.2017
13:08:38
а. не было когда писалось ни того ни другого б. не решает проблему

почему нельзя?

(a • b) • c = a • (b • c) вперёд и с песней, если тебе только >> надо

Aleksey
18.09.2017
13:09:37
Да, точно

Alexander
18.09.2017
13:09:39
если нужен bind понятно, что тебе Monad надо

Aleksey
18.09.2017
13:09:46
Но бинда то нет!

Alexander
18.09.2017
13:09:50
ага

Aleksey
18.09.2017
13:10:59
Да и смысл выражения do "aaa" "bbb" выглядит странно, т.к. тут ничего не "делается" (do)

Даже в парсерах c FromString do-блоки странно выглядят, ИМХО

Alexander
18.09.2017
13:12:28
ну например ты можешь так дерево собирать

do leaf ... branch $ do ... leaf ...

чтобы не писать fromList или mconcat

оно человечнее выглядит.

но пока самый реальный кейс я видел в network-transport/distributed-process

но сходу найти не могу

Aleksey
18.09.2017
13:13:39
do в первую очередь бинды сахарит, а не >>

Alexander
18.09.2017
13:13:44
угу

Google
Aleksey
18.09.2017
13:14:15
А если нет биндов, то do не нужен

do намекает на порядок вычисления, и привносить этот конкретный смысл туда, где он не нужен, странно

blaze-html доже в do-нотации дерево тэгов записывает. Это меня лично всегда раздражало

Arseniy
18.09.2017
13:17:41
Писали уже про RebindableSyntax?

Alexander
18.09.2017
13:20:47
нет, не писали, думали что все знают

Arseniy
18.09.2017
13:21:26
Оказывается, что это не очень известная вещь. Даже Oxij не знал ее, рассказал ему об этом месяц назад.

illiatshurotshka❄️
18.09.2017
14:04:52
а какой существующий язык программирования соответствует λPω̲ ?

из лямбда куба

Alex
18.09.2017
14:05:41
LF может

illiatshurotshka❄️
18.09.2017
14:05:54
как расшифровывается?

Alex
18.09.2017
14:06:45
http://twelf.org/wiki/Main_Page

не уверен есть ли там type operators, но завтипы есть, а полиморфизма нет

а расшифровывается как Logical Framework

Vyacheslav
18.09.2017
14:08:40
А полиморфизм это разве не частный случай завтипов?

Евгений
18.09.2017
14:08:44
illiatshurotshka❄️
18.09.2017
14:09:01
а type operators это типо data в хаскеле?

Alex
18.09.2017
14:09:23
хз я не знаю хаскеля :D

Vyacheslav
18.09.2017
14:09:46
Ну в хаскелле есть type operators

Евгений
18.09.2017
14:09:57
type operators это возможность построить типы хитрых сортов * -> *

Google
Vyacheslav
18.09.2017
14:10:13
Типа как type families, только операторы

illiatshurotshka❄️
18.09.2017
14:11:46
ого

Alex
18.09.2017
14:14:14
Vyacheslav
18.09.2017
14:58:17
то есть зав типы но не по типу Type

Bohdan
18.09.2017
15:12:25
Чем можно дампнуть любое выражение независимо от типа? Чтобы передать trace или print — надо знать, что внутри, а я для этого и хочу вывести, чтоб узнать

Ilya
18.09.2017
15:15:25
ты имеешь в виду, что может не быть Show?

Bohdan
18.09.2017
15:16:04
ты имеешь в виду, что может не быть Show?
Ну print ругается, что неизвестный тип, а он вроде show и дёргает же?

Ilya
18.09.2017
15:24:54
Не очень понятно, что там у тебя

Покажи код и ошибку

Евгений
18.09.2017
15:28:23
Не очень понятно, что там у тебя
Он хочет гарантированную сериализацию вне зависимости от инстанирования Show

Ilya
18.09.2017
15:28:36
мне кажется, что он хочет не это

скорее всего какой-то полиморфизм типа main = do x <- readLn print x

и ему жалуются, что неизвестен тип

Bohdan
18.09.2017
15:35:37
http://paste.debian.net/986657/ taporwave.hs:63:5: error: • No instance for (Show Options) arising from a use of ‘print’

Vasiliy
18.09.2017
15:38:01
ну и допиши ему deriving (Show)

Bohdan
18.09.2017
15:47:12
ну и допиши ему deriving (Show)
Спасибо, заработла :3

Vyacheslav
18.09.2017
20:38:57
а я могу как-то через forall сделать констрейнт на kind?

kana
18.09.2017
20:40:21
Констрейнт именно или просто полиморфизм?

Ilya
18.09.2017
20:40:23
Я думал, в hs по умолчанию констрейнт на кайнд *

Google
Ilya
18.09.2017
20:40:52
Для всех типовых переменных

kana
18.09.2017
20:41:32
Ну таки нет, не все типовые переменные имеют кайнд *, Comopose (f :: * -> *) (g :: * -> *)

Vyacheslav
18.09.2017
20:41:33
констрейнт

Для всех типовых переменных
хочу другой kind, чтобы там был не *, а конкретный

kana
18.09.2017
20:43:02
Ну так тупо укажи его?

Denis
18.09.2017
20:43:50
ConstraintKinds

Vyacheslav
18.09.2017
20:44:48
я смотрел на него, но так и не понял как заюзать

вот например у меня есть функция

fn :: Value -> Result a

как мне сделать constraint на a, что она должна быть какого-то кайнда

Alexander
18.09.2017
20:53:44
@termina1 : {-# LANGUAGE KindSignatures #-} {-# LANGUAGE PolyKinds #-} data Result (a :: k) data Value fn :: Value -> Result (a :: * -> *) fn = undefined

если хочется (a :: Value) то DataKinds

{-# LANGUAGE KindSignatures #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE DataKinds #-} data Result (a :: k) data Value fn :: Value -> Result (a :: Value) fn = undefined

Vyacheslav
18.09.2017
21:47:08
нифига все равно не получается

я чего-то не понимаю

вот пример

singletons [d| data AIIntent = IntentTask | IntentChart |] instance FromJSON (SAIIntent (b :: AIIntent)) where parseJSON (String "create_task") = return SIntentTask parseJSON (String "send_task") = return SIntentChart parseJSON _ = fail "Unknown action"

почему он тут мне выдает ошибку про rigid variable?

Alexander
18.09.2017
22:01:46
ох синглетоны

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