@haskellru

Страница 11 из 1551
trump ? trump ? hillary
14.04.2016
17:57:10
там

Vladislav
14.04.2016
17:57:15
похоже что все держалось на нескольких людях, которые недавно ушли (один из них в фб)

trump ? trump ? hillary
14.04.2016
17:57:38
лол

жизнь боль

Google
Alex
14.04.2016
19:20:10
кстати, а почему хаскелль так мало популярен в продакшене?
вполне популярен, пока переписывают легаси с плюсов в финансовой сфере на хаскель

до попсовых ниш попозже дойдет

Vladislav
14.04.2016
19:20:39
а как он в финансовой сфере со своим GC живет?

Митко Соловец?
14.04.2016
19:20:44
никак

Alex
14.04.2016
19:21:21
ты про скорость? 20 милионов операций в секунду на одном хосте, норм?

Vladislav
14.04.2016
19:21:57
если речь про HFT, нужна предсказуемая latency

Митко Соловец?
14.04.2016
19:22:31
а вы сами то такой софт писали?

Vladislav
14.04.2016
19:22:43
для java есть специальные jvm со специальными GC, а для хаскеля?

Alex
14.04.2016
19:22:44
пока нет, знакомый под битки пилит

Vladislav
14.04.2016
19:22:53
Alex
14.04.2016
19:23:17
если речь про HFT, нужна предсказуемая latency
это все равно, с реалтаймоси идет

Google
Vladislav
14.04.2016
19:24:22
ну вот, я пока не слышал про реалтаймовый runtime для хаскеля

Quet
14.04.2016
19:54:03
как будто gc для кого-то проблема в финансовой сфере :р

Yuri
14.04.2016
20:15:48
вполне популярен, пока переписывают легаси с плюсов в финансовой сфере на хаскель
А можно этот момент подробнее? Я как раз из этой сферы, и пока что рабочий язык R, постепенно апплаюсь в HFT на C++, но вообще очень хотелось бы в будущем работать в финансах с Хаскеллем. Кто вообще из фондов с ним работает, есть какие-то кейсы?)

Yuri
14.04.2016
20:18:32
Ну, просто с блокчейном сложная тема, там транзакционные издержки очень высокие и неявные. Я понял, спасибо) Буду надеяться, что эта тема яснее станет

Vladislav
14.04.2016
20:21:57
как писать/использовать на хаскелле эффективные структуры данных, не заворачивая их в IO/ST монады?

trump ? trump ? hillary
14.04.2016
21:09:17
как сделать нотацию для IO ProcessHandle?

первая ошибка с -> IO ProcessHandle

вторая с -> IO ()

Ilya
14.04.2016
21:12:32
У тебя мэйн что возвращает?

Io processhandle

trump ? trump ? hillary
14.04.2016
21:12:55
import System.Process coolTts :: String -> IO ProcessHandle coolTts x = runCommand $ "powershell.exe .\\tts.ps1 " ++ show x main :: IO () main = coolTts $ concat $ repeat "sas"

Ilya
14.04.2016
21:14:11
Не, это должно быть ио

Ио ()

trump ? trump ? hillary
14.04.2016
21:14:34
так тоже не работает

Ilya
14.04.2016
21:14:34
А на деле Ио процессхэндл

trump ? trump ? hillary
14.04.2016
21:14:43
там на скрине две ошибки

Ilya
14.04.2016
21:16:10
Окей, попробуй в конец main= ... дописать >> return ()

Google
Ilya
14.04.2016
21:16:34
Жутко с телефона писать

trump ? trump ? hillary
14.04.2016
21:17:22
Vladislav
14.04.2016
21:19:14
main = (coolTts $ concat $ repeat "sas") » return ()

или даже main = do coolTts $ concat $ repeat "sas"; return ()

Ilya
14.04.2016
21:21:59
короче

у тебя сигнатура main :: IO

а ты ему подсовываешь IO Processhandle

Vladislav
14.04.2016
21:23:48
main :: IO ()

Ilya
14.04.2016
21:23:57
да

сори

на твоей счастье есть (»)

(Monad m) => (») :: m a -> m b -> m b

вот и воспользуйся этим

с do то же самое

Vladislav
14.04.2016
21:26:36
do - просто синтаксический сахар, транслируемый в вызовы (») и лямбды

Ilya
14.04.2016
21:27:22
на книжках по хаскелю надо писать "do убивает"

реально

trump ? trump ? hillary
14.04.2016
21:28:11
Ilya
14.04.2016
21:28:39
main = (coolTts $ concat $ repeat "sas") » return ()

trump ? trump ? hillary
14.04.2016
21:28:49
ну это я уже делал

Google
trump ? trump ? hillary
14.04.2016
21:28:52
оно не помогает

а не

скомпилило

Ilya
14.04.2016
21:29:09
а мне помогает)

:D

а так как почти любой первый опыт с do — это еще и getLine/putStrLn - то все, пиздец, человек сразу видит родную императивщинку

trump ? trump ? hillary
14.04.2016
21:30:50
а еще оно мне убило систему вызовами tts из dll бесконечными

есть интервальное выполнение в хаскеле?

Ilya
14.04.2016
21:32:55
Это что такое?

trump ? trump ? hillary
14.04.2016
21:33:29
ну чтоб выполнялось каждые n секунд или чего там

или нужно sleep/что там использовать?

Vladislav
14.04.2016
21:36:10
Кто-нибудь пробовал что-то писать на ATS? http://www.ats-lang.org/

или idris http://www.idris-lang.org/

к вопросу о понимании IO-монады и императивщины в хаскелл, помогает считать что в "IO a" хранится императивная программа, возвращающая a на выходе. Программа на хаскелл на самом деле занимается тем, что конструирует императивную программу из "кирпичиков" с помощью оператора композиции (»). main - специальная функция, которую вычисляет рантайм, чтобы получить императивную программу для выполнения

а do-нотация - просто dsl для более удобного конструирования императивных программ

Ilya
14.04.2016
21:52:39
IO Monad Considered Harmful · in Code https://blog.jle.im/entry/io-monad-considered-harmful.html

Вопросы все же остаются

Как определено (>>=) для IO? Или для MonadIO?

Vladislav
14.04.2016
21:58:11
а никак не определено, это встроенная конструкция

и ее нельзя определить, т.к. нельзя заглянуть внутрь IO a

Google
Vladislav
14.04.2016
21:59:39
хотя, если подумать, можно представить имплементацию, в которой IO a - в прямом смысле программа на каком-то конкретном языке

тогда можно будет определить (»=) в явном виде

Ilya
14.04.2016
22:00:01
Окей. Пусть так. Вся программа - хитро скомпозированное IO(), которое прогоняется

Не, ну а как в байт-код то оно компилируется) это и есть "программа на конкретном языке"

Vladislav
14.04.2016
22:01:04
тогда вся императивщина становится просто библиотекой-комбинатором программ на этом языке

компилируется, но implicitly

для кода на хаскелл IO a непрозрачна

Ilya
14.04.2016
22:02:08
В статье есть отступление

Vladislav
14.04.2016
22:02:27
а могла бы быть data IO a = Code String

я еще не дочитал

Ilya
14.04.2016
22:02:46
Что, мол, монадический интерфейс IO вовсе не must

Vladislav
14.04.2016
22:02:54
верно

просто он удобен

Ilya
14.04.2016
22:03:16
Никак не могу обернуть свой мозг вокруг этого

Vladislav
14.04.2016
22:03:29
но необязателен

Ilya
14.04.2016
22:03:41
А как было бы без >>= и >>

Как композировать-то тогда?

Vladislav
14.04.2016
22:04:14
достаточно (»=) и return, » через них определяется

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