Влод
можно с телефона писать (огромный плюс)
Dmitry
сдаюсь, пожалуй.
Dmitry
а для си или си плюс плюс или джавы нужен такой бот?
Dmitry
ну, просто интересно
Serhii
Ну ээ, можна просто POST на http://tryhaskell.org/eval. Чего тут сложного?
Serhii
Я от сейчас учу haskell, мне бы было удобно eval c ipad
Serhii
Просто думал может кто то написал уже
Нурлан
тема ботом классная
Serhii
Dmitry
ну черт его знает, я даже текст слов на человеческом языке писать с телефона не очень готов, все пальцы сломаешь или вообще убьешься, потому что за рулем
Влод
https://ghc.io/
а что там? там есть апи? у меня не открываются about и help
Dmitry
да черт знает, первое что нашел
Serhii
Dmitry
вон, еще
Dmitry
да
Влод
ок, выглядит норм
Serhii
ладно, я напишу
Влод
да действительно с телефона сверхнеудобно набирать разные квадртные скобки, стрелки.
Artem
@rextester_bot
Serhii
есть еще @tryhaskell, но он не работает
Влод
Language:
haskell
Source:
main = print "hi"
Result:
"hi"
Artem
Его админы могут добавить прямо в группу, если что
Влод
ну то что надо. только main напрягает
Artem
Но спамоопасно, конечно
Влод
зачем.
Artem
Да, main печаль
Serhii
что-от он завис
Serhii
Language:
haskell
Source:
main = foldl (+) 0 [1..10]
Errors:
source_file.hs:1:14:
No instance for (Num (IO t0)) arising from a use of ‘+’
In the first argument of ‘foldl’, namely ‘(+)’
In the expression: foldl (+) 0 [1 .. 10]
In an equation for ‘main’: main = foldl (+) 0 [1 .. 10]
source_file.hs:1:20:
No instance for (Enum (IO t0))
arising from the arithmetic sequence ‘1 .. 10’
In the third argument of ‘foldl’, namely ‘[1 .. 10]’
In the expression: foldl (+) 0 [1 .. 10]
In an equation for ‘main’: main = foldl (+) 0 [1 .. 10]
Serhii
и кривой
Влод
Language:
haskell
Source:
main = print $ foldl (+) 0 [1..10]
Result:
55
Serhii
а, точно. ну это совсем не удобно
Влод
ты IO забыл. ну как бы хотелось чтобы у него ещё ghci был
Serhii
если это eval-бот
Влод
он ещё умеет файлы принимать, что тоже как-то не в тему.
вот если я файл написал, то тут мне точно не лень runhaskell написать
Serghei
ㅤ
Влод
https://hackage.haskell.org/package/telegram-api
Serghei
а есть hoogle для ghci ? чтоб получить ответ прямо в ghci
Влод
ну я у себя настроил когда то. причём он лучше того основного хугла
Влод
:def hoogle \x -> return $ ":!hoogle \"" ++ x ++ "\""
:def doc \x -> return $ ":!hoogle --info \"" ++ x ++ "\""
Влод
ну и stack install hoogle
Serghei
я еще вообще ничкго не настраивал, это мне что-то типа ~/.stackrc надо иметь?
Serghei
хорошая идея в общем, поковырять stack :) вчера у меня была "суббота хаскела", а сегодня напрашивается "вечер стека" 🙂
Влод
аа забыл про это написать.
ну вообще у меня это написано в ~/.ghci (и больше ничего, хотя наверное стоит туда -XOverloadedStrings написать)
не знаю стоит ли это на уровне стека прописывать.
Влод
ну и пользоваться :hoogle [a] -> a
doc тоже полезная штука
andrei
Serhii
О, спасибо
andrei
правда он медленный и на JS. Ну и запрос на tryhaskell это как-то не трушно)
Влод
Prelude> :t 1
<hint>:1:1: parse error on input ‘:’
andrei
ну так это tryhaskell.org
andrei
если кто напишет бота нормального могу отдать ник)
Влод
ну просто из-за`Prelude>` подумал, что ghci будет
Влод
а для каждого пользователя отдельная сессия?
Влод
ну и ещё мб исходник есть
andrei
не, там просто запрос на tryhaskell.org/eval
Влод
ну попытаюсь угадать: делал без вебхуков, просто по таймеру отправяешь запрос, для каждого полученного пользовательского запроса отправляешь блокирующий запрос на tryhaskell.org/eval ?
всё в одном потоке?
andrei
не блокирующий) там rxjs
Serghei
Есть сумма, и есть номиналы монет. Нужно выдеть сколькими способами можно эту сумму выдать этими номиналами. Например, если у нас есть сумма 4, и номиналы 1 и 2, то это 3 способа: 1+1+1+1, 1+1+2, 2+2 (т.е. варианты типа 1+2 и 2+1 считаются одним вариантом)
Номиналов может быть любое кол-во. На вход в функцию подается число и список номиналов.
Говорят это олимпиадная задачка
Anatolii
Помойму такая задачка была на курсах степика по хаскелю
Влод
ну да. на timus наверное одна из первых в динамическом программировании
Serghei
на стпике не знаю не видел
Serghei
скиньте ссылку на степик
Влод
http://aliev.me/runestone/Recursion/DynamicProgramming.html что-то похожее, на timus не нашёл
Serghei
спасибо
Влод
короче по-хорошему лучше с ДП разобраться если не разбирался.
но есть один лайфхак если ты не собираешься решать олимпиадные задачи (например у меня было задание перед собеседованием): решаешь задачу рекурсивно в лоб, перебираешь все номиналы и и для каждого спускаешься вниз отнимая значение номинала.
дальше у тебя получается норм результат, но для больших значений твоя функция работает вечность и делаешь как тут https://wiki.haskell.org/Memoization
Nikita
guys
Nikita
ой извиняюсь
Nikita
тут на русском
Nikita
я тут проект выложил один
Nikita
https://github.com/nikitavoloboev/research
Dmitry
капец. почему нельзя просто зайти и послушать лекцию?!
Nikita
интересно мнения услушать
Nikita
идея в том что я все записки публикую
Nikita
в форме майнд мапов
Nikita
под одним большим майнд мапом
Nikita
там haskell тоже есть :)
Nikita
только немного пока
Влод