
Ilya
19.02.2017
21:12:46
когда я изучал C, у меня на планшете стоял TCC, например
удобно

Dmitry
19.02.2017
21:12:57
так что надо привыкать к реальности, в которой есть пока только ghc

Ilya
19.02.2017
21:13:11
ок, это не суть

Google

Ilya
19.02.2017
21:13:15
ghc можно портировать?

Quet
19.02.2017
21:13:16
"пока"? )

Dmitry
19.02.2017
21:13:27
ну uhc вроде официальн не закрывали
или закрыли? давно не заходил

Quet
19.02.2017
21:13:47
вроде ничего не намечается даже
хотя если purescript будет уметь в нативный код...
но это фантастика все конечно

Dmitry
19.02.2017
21:14:18
две недели назад коммиты. еще держатся, не сдались
pure это же не хаскел

Quet
19.02.2017
21:14:56
ну близок к нему
история с рекордами там лучше хаскеля

Dmitry
19.02.2017
21:14:58
если бы он имел хотя бы более-менее формальную спецификацию, можно было бы поговорить про нативный код, мне на мипсы нужен какой-то язык
purescript я бы может смог спортировать, хотя бы c C-бэкендом.
но по моему там нет никакой спецификации

Quet
19.02.2017
21:15:45
да, спеки четкой вроде не было

Google

Ilya
19.02.2017
21:16:00
забавно, как одно предложение в скобках может направить разговор совсем в другое русло ?

Quet
19.02.2017
21:16:45
ты кстати как, от отсутствия норм рекордов не страдаешь? линзы в продакшене и все такое?

Dmitry
19.02.2017
21:16:54
кстати, ios это ж бсд + arm ?
в таком окружении пускали ghc и и кажется, даже ghci

Quet
19.02.2017
21:17:07

Dmitry
19.02.2017
21:17:31
но там всякие джейлбрейки и вот это всё, в общем, нешуточная задача.

Quet
19.02.2017
21:17:55
нене, джейлы это ад
должно работать без них
из стора )

Dmitry
19.02.2017
21:18:05
вопрос кому про линзы? если мне, то есть немного, да
но терпимо

Quet
19.02.2017
21:18:11
к тебе, да

Ilya
19.02.2017
21:18:15
какие джейлбрейки, вы о чём

Dmitry
19.02.2017
21:18:25
и линзы в продакшене, куда ж без них
ну т.е последний проект пока без них, но думаю временно

Quet
19.02.2017
21:18:37
тут прод у тебя да у александра

Ilya
19.02.2017
21:19:20
сейчас на телефонах по 3 гигабайта, можно хоть виртуалку с полноценным линуксом (с ghc) запустить, и туда интерфейс пробросить
да, это будет тормозить по сравнению с нормальной реализацией, но раз никакой нет...

Dmitry
19.02.2017
21:19:43
а не проще я не знаю - ноутбук купить?
ну так, в порядке идеи

Ilya
19.02.2017
21:19:52
кстати, VirtualBox в google play находится

Google

Dmitry
19.02.2017
21:20:10
я даже не знаю как вы на планшетах программируете - на экранной клавиатуре?
не, ну я на военной кафедре в ЦВК-5М программы вводил тумблерными регистрами
но мне кажется с тех пор прогресс должен был шагнуть вперед

Igor
19.02.2017
21:20:46

Ilya
19.02.2017
21:21:18
ноутбуки сейчас у всех есть, не об этом речь

Dmitry
19.02.2017
21:21:39
чем ждать, пока какой-то вася в эппл стор ghc положит (никогда)

Ilya
19.02.2017
21:22:56
я говорил про сравнение телеграм-бота и полноценного приложения

Dmitry
19.02.2017
21:23:33
ну телеграм-бота можно прямо завтра написать, наверное быстрее, чем мы этот вопрос обсуждаем
правда непонятно зачем

Ilya
19.02.2017
21:24:06
это мы поняли

Dmitry
19.02.2017
21:25:07
ну вряд ли в телеграмм бота получится что-то существенное, и вряд ли "работа" в нем будет существенно отличаться по мучительности... ну я не знаю даже с чем сравнить

Ilya
19.02.2017
21:27:22
да, телеграм-бот это шляпа
а насчёт планшетов - сейчас у многих планшеты с чехлом-клавиатурой
почти что ноутбук и есть

Quet
19.02.2017
21:36:01
@voidlizard ты просто наверное не понимаешь какая тут "работа" у людей происходит
это у тебя там веб-сервис опердень и генерация сишечки
а тут народ выясняет какой тип у (.) (.) (.) и почему такой
для второго варианта телеграм бот -- годится ок

? animufag ?
19.02.2017
21:39:13
короче не знаю о чём там разговор, но бот для тг это задача примерно на день, а портировать гхц на андроид это задача на неопределнное время. хотя мб кому-то наоборот подогреет интерес.


Serghei
19.02.2017
22:21:57
итак, решил я это дело доковырять с монетками разменными. на степике предпологается что для для монеты 7 и номилов 2, 3, 7 должен быть ответ [[2,2,3],[2,3,2],[3,2,2],[7]] что не до конца приминимо в жизни. хотя я конечно решил
потом я подумал что не плохо бы показать только уникальные варианты. 223 и 322 не уникальны
у меня получилось
import Data.List
calc :: Int -> [Int] -> [[Int]]
calc 0 _ = [[]]
calc _ [] = [[]]
calc amount coins = nub $ map sort [c:cs | c <- coins, amount >= c, cs <- calc (amount - c) coins]
догадываюсь что из-за моего опыта я написал лапшекод :)
но вопрос в другом, если я хочу получить ответ на вопрос "сколько всего вариантов", то после переделки в
import Data.List
calc :: Int -> [Int] -> Int
calc 0 _ = 0
calc _ [] =
calc amount coins = length $ nub $ map sort [c:cs | c <- coins, amount >= c, cs <- calc (amount - c) coins]
я получаю
• Couldn't match expected type ‘[[Int]]’ with actual type ‘Int’
• In the expression: calc (amount - c) coins
In a stmt of a list comprehension: cs <- calc (amount - c) coins
In the second argument of ‘map’, namely
‘[c : cs | c <- coins, amount >= c, cs <- calc (amount - c) coins]’

Google

Serghei
19.02.2017
22:22:08
я не уловил суть? :(
> calc _ [] =
calc _ [] = 0
да, понял где ошибся ?


Ilya
19.02.2017
23:50:31
итак, решил я это дело доковырять с монетками разменными. на степике предпологается что для для монеты 7 и номилов 2, 3, 7 должен быть ответ [[2,2,3],[2,3,2],[3,2,2],[7]] что не до конца приминимо в жизни. хотя я конечно решил
потом я подумал что не плохо бы показать только уникальные варианты. 223 и 322 не уникальны
у меня получилось
import Data.List
calc :: Int -> [Int] -> [[Int]]
calc 0 _ = [[]]
calc _ [] = [[]]
calc amount coins = nub $ map sort [c:cs | c <- coins, amount >= c, cs <- calc (amount - c) coins]
догадываюсь что из-за моего опыта я написал лапшекод :)
но вопрос в другом, если я хочу получить ответ на вопрос "сколько всего вариантов", то после переделки в
import Data.List
calc :: Int -> [Int] -> Int
calc 0 _ = 0
calc _ [] =
calc amount coins = length $ nub $ map sort [c:cs | c <- coins, amount >= c, cs <- calc (amount - c) coins]
я получаю
• Couldn't match expected type ‘[[Int]]’ with actual type ‘Int’
• In the expression: calc (amount - c) coins
In a stmt of a list comprehension: cs <- calc (amount - c) coins
In the second argument of ‘map’, namely
‘[c : cs | c <- coins, amount >= c, cs <- calc (amount - c) coins]’
nub, sort и прочие пряники в таких чисто "олимпиадных" задачах не применяют. Постараюсь объяснить.
К sort стоит обращаться, если у тебя откуда-то уже есть список, и тебе надо его упорядочить (спасибо, кэп).
А если ты сам конструируешь список "с нуля", то упорядоченность ответа просто должна быть зашита в алгоритм. Это будет и эффективнее, и красивее. Зачем сортировать элементы, если можно сразу расставлять правильно?
Аналогично с nub. Если твой алгоритм выбрасывает кучу результатов, которые ты считаешь одинаковыми, то не нужно в конце фильтровать ответ nub-ом. Вместо этого переделай алгоритм так, чтобы одинаковые результаты не получались.
Ну такая "гигиена" решения подобных задач приходит с опытом, вряд ли тут можно выделить какое-то общее правило...
Вот что у меня получилось
calc 0 _ = [[]]
calc _ [] = []
calc amount (c:cs) = calc amount cs ++ if amount < c then [] else map (c:) $ calc (amount - c) (c:cs)
особо не тестил, но вроде работает
А вообще твоя задача похожа на классическую https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B7%D0%B1%D0%B8%D0%B5%D0%BD%D0%B8%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%B0


Serghei
19.02.2017
23:56:08
хм
любопытно

Kit
19.02.2017
23:58:12
Может тест не пойти, если это олимпиада

Ilya
19.02.2017
23:59:21
ну я в ++ конечно тоже не уверен =)
нехорошая операция...

Kit
20.02.2017
00:00:46
Но я тогда на эту формулу три дня убил.

Serghei
20.02.2017
00:03:44
это не олимпиада. просто попалась задачка, человек говорит что она давалась на какой-то там олимпиаде (когда-то там), по этому я сказал "говорят олимпиадная". но у меня никакой олимпиады понятное дело нет. второй день ковыряю всякое разное на хаскеле, пока выходные - тренируюсь )
ну и да, тут скидывали ссылку на степик- там похожая задача

Kit
20.02.2017
00:05:56
та задача которую я решал это разбиение числа n на k слагаемых
у тебя чуть иначе задача стоит, как я понял разбиение числа n по заданным слагаемым

Google

Kit
20.02.2017
00:08:53
смотрю я на свой старый код... повеситься хочется ?

Serghei
20.02.2017
00:14:07
nub, sort и прочие пряники в таких чисто "олимпиадных" задачах не применяют. Постараюсь объяснить.
К sort стоит обращаться, если у тебя откуда-то уже есть список, и тебе надо его упорядочить (спасибо, кэп).
А если ты сам конструируешь список "с нуля", то упорядоченность ответа просто должна быть зашита в алгоритм. Это будет и эффективнее, и красивее. Зачем сортировать элементы, если можно сразу расставлять правильно?
Аналогично с nub. Если твой алгоритм выбрасывает кучу результатов, которые ты считаешь одинаковыми, то не нужно в конце фильтровать ответ nub-ом. Вместо этого переделай алгоритм так, чтобы одинаковые результаты не получались.
Ну такая "гигиена" решения подобных задач приходит с опытом, вряд ли тут можно выделить какое-то общее правило...
полностью согласен

Alexander
20.02.2017
06:36:21
Мне лень перечитывать 300 сообщений, если там что-то интересное или вопросы были - пните

Тёма
20.02.2017
06:50:44
Есть какая-нибудь обязательная к прочтению книга по теории типов?

Dmitry
20.02.2017
06:56:33
обязательного нет ничего, а так - TAPL

Тёма
20.02.2017
06:56:42
Спасибо!

eugene
20.02.2017
06:57:35

Тёма
20.02.2017
07:00:53
Спасибо всем огромное
Вопрос к пользователям emacs-а (чистого гнушного, 24.5.1, без иксов). У меня в ghc-mod... как бы сказать... большая задержка между нажатием клавиши и ответом редактора. С чем может быть связано? Чинится ли? Отключение ghc-mod'а помогает.

Dmitry
20.02.2017
07:02:13
с емаксом время от времени так. я когда на окамле писал, у меня тормозил модуль подсветки окамла, пришлось вернуться в вим

Тёма
20.02.2017
07:03:29
Мне некуда возвращаться. Я поищу ещё решение, если найду, то напишу.

? animufag ?
20.02.2017
07:14:57
> гомотопическая теория типов.
Конечно же это обязательная книга. Каждый хаскелист на зубок знает

eugene
20.02.2017
07:15:49

Alexander
20.02.2017
11:15:48
@quetzal (сорри что оффтоп), а что get NEXT_DUP делает если значения закончились?
впрос снят
путать true и false плохо :(

Evgeniy
20.02.2017
11:51:00
https://wiki.haskell.org/Heterogenous_collections
вот кстати интересно спросить по поводу Hlist-ов в хаскелле - в скале в наиболее популярной реализации (http://jto.github.io/articles/getting-started-with-shapeless/), количество элементов в списке сильно аффектит время компиляции - а как тут ситуация?