
Alexander
24.06.2017
21:25:02
оно через $(varE a) используется? или есть более простые пути?

Artyom
24.06.2017
21:26:44
нету
можно хелпер объявить
newVar s = do
x <- newName s
return (x, varE x, varP x)
do
(_, aE, aP) <- newVar "a"
[| \ $aP -> ... $aE ... |]

Alexander
24.06.2017
21:31:04
+

Aldar
24.06.2017
23:09:31

Google

Ldeana
25.06.2017
05:40:26
@MoneyMafia - канал где бесплатно публикуются различные способы и схемы заработка, которые продаются на тематических форумах за бешенные деньги.

Vladislav
25.06.2017
05:49:54
Привет!

Ilya
25.06.2017
05:50:32
Привет, рад видеть знакомые лица!

Richter
28.06.2017
09:24:40
че так тихо?

сегодня
28.06.2017
13:44:47
нет задач

Maxim
28.06.2017
13:57:35
В хаскеле есть что-то вроде console.log во время выполнения программы?
?

Евгений
28.06.2017
13:59:21

Dmitry
28.06.2017
13:59:23
print ("WUT", (show 12344))
trace (show ("WUT ", 1234))

Евгений
28.06.2017
14:00:05
Я подозреваю, что ему нужно не из IO :)

Anatolii
28.06.2017
14:00:18
trace без IO

Maxim
28.06.2017
14:05:57
это я пытаюсь сделать задание со степика и не очень получается. я так понимаю потом что области неправильные и в итерации хотел посмотреть что у меня в переменной

Google

Maxim
28.06.2017
14:06:08
но наверное это неправильный подход в хаскеле
module Integration where
integration :: (Double -> Double) -> Double -> Double -> Double
integration f a b = iter 0 a where
steps = 1000
delta = (b - a) / steps
iter acc a | a >= b = acc
| otherwise = iter newAcc (a + delta) where
newAcc = acc + (f a + f (a + delta)) / 2 * delta

Alexander
28.06.2017
14:10:13
trace/traceM к выше, тут надо посмотреть
что не получается то?
не тот ответ/не проходит по времени?
btw, раз уж количество шагов посчитано, то не проще ли по ним итерироваться, а не по a+delta копя ошибку?
вообще если пользоваться фунциональным подходом через iterate и т.п. то может жить проще

Maxim
28.06.2017
14:14:02
не тот ответ
про iterate пока не проходил)

Kit
28.06.2017
14:15:06
это что вы интеграл пытаетесь посчитать?
лучше испоьзовать foldl

Alexander
28.06.2017
14:20:28
лучше не использовать foldl никогда
foldl' или foldr
исключение если foldl это библиотека Гонзалесова
но внешние либы на курсах заборонены

Kit
28.06.2017
14:23:49

Alexander
28.06.2017
14:24:00
foldl как библиотека - хорошо
как метод - плохо
т.к. как метод это гарантировано thunk leak

Kit
28.06.2017
14:24:47
про библиотеку я не знал

Google

Kit
28.06.2017
14:24:53
и вообще не нашел
можешь скинуть ссылку?

Vasiliy
28.06.2017
14:27:04
http://hackage.haskell.org/package/foldl

Alexander
28.06.2017
14:50:28
https://www.well-typed.com/blog/2014/04/fixing-foldl/
про foldl
перед сном хорошо почитать

Alexey
28.06.2017
15:18:24
посоветуйте какую либо использовать чтобы парсить аргументы командной строки?

Dmitry
28.06.2017
15:18:48
optparse-applicative
если очень простые, то optparse-generic но потом все равно придёт к optparse-applicative

Alexey
28.06.2017
15:20:52
вот тут (https://wiki.haskell.org/Command_line_option_parsers) говорят что она не умеет конкретные ошибки показывать :(

Vasiliy
28.06.2017
15:22:30
смотря какая степень конкретности нужна
написать "Invalid argument `ololo'" оно может

Alexey
28.06.2017
15:35:45
ясно. спасибо

Dmitry
28.06.2017
15:38:23
@qnikst а имеет смысл избавляться от foldl-ов? их небось всё равно оптимизатор оптимизирует

Oleg
28.06.2017
15:44:53

Dmitry
28.06.2017
15:45:06
т.е имеет смысл?

Oleg
28.06.2017
15:45:21
валятся стэковерфлоу
просто меняешь на foldl'

Dmitry
28.06.2017
15:46:27
ничего не валится, но попроую убрать и посмотрю что получится

Oleg
28.06.2017
15:47:24

Google

Alexander
28.06.2017
15:52:48
optparse-applicative если аппликативные и position free
@voidlizard от foldl-ов имеет
никто их не оптимизирует
Oleg ну стек маленький, но расширяемый (блин как это называется), в общем блоками он

Dmitry
28.06.2017
15:54:39
я давно этого не делал, но смутно помню, что все мои попытки заменять foldl на foldl' заканчивались ничем, т.е никакого профита не давали

Oleg
28.06.2017
15:56:08

Alexander
28.06.2017
15:56:23
ну есть сишный стек
его тоже можно потратить, но его тратит далеко не все
сейчас его таки сделали ограниченным, раньше не так было
можно через -K задать

Oleg
28.06.2017
16:00:18

Alexander
28.06.2017
16:00:30
qnikst@qwork ~ $ ./1 +RTS -K1M
1: Stack space overflow: current size 33624 bytes.
1: Use `+RTS -Ksize -RTS' to increase it.
qnikst@qwork ~ $ ./1 +RTS -K10M
1: Stack space overflow: current size 33624 bytes.
1: Use `+RTS -Ksize -RTS' to increase it.
qnikst@qwork ~ $ ./1 +RTS -K100M
1: Stack space overflow: current size 33624 bytes.
1: Use `+RTS -Ksize -RTS' to increase it.
неожиданно
на програмке которая жрет стек
qnikst@qwork ~ $ cat 1.hs
import Data.List
main = print $ foldr (+) 0 [1..100000000]

Artyom
28.06.2017
16:13:04
как на арче скомпилировать библиотеку со старым GHC (7.6, например)?

? animufag ?
28.06.2017
16:21:40
(точно не помогу) проблема в том что неоткуда достать старый ghc?

Artyom
28.06.2017
16:22:10
проблема в том, что а) неоткуда достать старый ghc, б) я не знаю, как сказать кабалу/стеку использовать старый ghc

? animufag ?
28.06.2017
16:27:52
кажется все эти lts начинают с ghc 7.8
хотя опция выбора ghc там вроде была. например когда используешь ghcjs
https://docs.haskellstack.org/en/stable/yaml_configuration/#compiler

Google

? animufag ?
28.06.2017
16:32:55
но вообще это более глобальная проблема у арча: что делать если нужна версия постарее. я когда то решил что проще будет собрать самому, чем разбираться, а потом перешёл на убунту

Dmitry
28.06.2017
16:33:28

Artyom
28.06.2017
16:37:17
если честно, я не знаю, насколько актуально. Ну и когда его хоть немножко сложно поддерживать, я его не поддерживаю
но обычно у меня главный источник трудностей – то, что приходится билда на тревисе долго ждать, чтобы какой-нибудь ворнинг пофиксить :) если смогу локально тестить, станет легко поддерживать

Alexander
28.06.2017
16:38:32
@lightgreen поставить в префикс генту, а дальше понятно
вместо генты можно nix
кабалу просто - with-ghc
со стеком хуже, надо найти подходящий снапшот, где этот ghc

? animufag ?
28.06.2017
16:39:44
кажется все эти lts начинают с ghc 7.8
хотя опция выбора ghc там вроде была. например когда используешь ghcjs
https://docs.haskellstack.org/en/stable/yaml_configuration/#compiler

Alexander
28.06.2017
16:40:06
зато если найти есть шанс что он даже ghc поставит (но не очень большой, скорее всего системные либы с которыми он хочет линковаться - поедут, я не думаю, что для бинарных релизов они делают кучу вариантов ghc

Artyom
28.06.2017
16:40:59
о, я нашёл, что в AUR есть все версии (7.4 – 7.10)
теперь с with-ghc будет всё ок, наверно
спасибо

Ilya
28.06.2017
20:10:41
А здесь есть кто-нибудь, кто писал больше 10k loc на Haskell'е в каком-нибудь проекте?