@haskellru

Страница 1305 из 1551
kana
25.06.2018
19:00:10
да в State например

Александр
25.06.2018
19:00:11
Тут нужен код

да в State например
На монаде Стейта можно сделать аналог стейтфул-кода. Но не объектов.

kana
25.06.2018
19:02:06
так значение + методы есть объект

Google
Denis
25.06.2018
19:02:55
комонада объект коалгебры объект коиндукция моделирует объекты

Александр
25.06.2018
19:03:04
так значение + методы есть объект
У тебя нет этого значения инкапсулированного с методами, оно пропускается через стетйт-монадический код.

Ну все, я умываю руки, вы пытаетесь аргументровать про ООП, привлекая концепции, которые имеют такое же название, но не являются концепциями из ооп

kana
25.06.2018
19:04:22
стой

смотри

у нас есть значение некоторое

Александр
25.06.2018
19:04:32
Я ушел

kana
25.06.2018
19:05:41
ну ладно. в любом случае, я вижу некоторое значение, которое уже по сути есть состояние. Есть методы для работы с этим значением, которые могут вернуть новое значение (обновляют состояние) работать со значением БЕЗ методов мы не можем, оно спрятано

class Shape s where double :: s -> s area :: s -> Float data Rect = Rect { width :: Float, height :: Float } instance Shape Rect where double (Rect w h) = Rect (w * 2) (h * 2) -- x4 lol area (Rect w h) = w * h f :: Shape s => s -> IO () f shape = do let shape' = double shape print $ area shape' main :: IO () main = f (Rect 10 20)

Kirill
25.06.2018
19:07:41
Так что этот чувак опоздал
Ты в 2014-м исследовал, а этот чувак в 2013-м со своими лекциями опоздал? Вот это поворот...

Александр
25.06.2018
19:09:20
Если он раньше это делал, ну окей

Сделаем вид, что сегодня луна неправильно светит и разойдемся.

Google
kana
25.06.2018
19:14:18
я кстати понял, что по сути в hinteractive реализован динамически типизированный язык

Александр
25.06.2018
19:25:56
я кстати понял, что по сути в hinteractive реализован динамически типизированный язык
В некотором смысле да. Но все-таки, там не динамический язык, а два слоя: типизированный и безтиповый. На типизированном уровне я могу получить доступ к объектам любого сериализуемого типа (причем, если нужно, я сделаю это типо-безопасно, с помощью того же подхода, который в stm_free применил), а на безтиповом уровне я храню все состояние игры в JSON и потому могу его оперативно складывать в файл, если нужно.

A64m
25.06.2018
19:34:02
ну вот тут FT прямо сравнивается и с ооп и с типичным функциональным подходом, когда функция-"интерпретатор" ПМ-ом интерпретирует "язык"-АлгТД https://oleksandrmanzyuk.wordpress.com/2014/06/18/from-object-algebras-to-finally-tagless-interpreters-2/

A64m
25.06.2018
19:34:18
так что это не ооп, очевидно

Александр
25.06.2018
19:36:10
Спасибо, почитаю

Imants
25.06.2018
20:00:32
простите, с чего лучше начать учить хаскель - с теории категорий или с ТРИЗ?
Можно с одного из популярных учебников по Хаскелю или курса на степике. ТК или ТРИЗ - слишком долгий путь к Хаскелю

Алексей Ayaye :)
25.06.2018
20:20:53
я читал книжки, потом пошел курс на степике. курс хорош тем, что заставляет делать руками. обратную связь дает. а книжку прочитал - непонятно, понял или нет )

Leonid
25.06.2018
20:23:46
OOP это IORef

Alex
26.06.2018
07:26:12
Джентельмены, помогите: у меня есть строки вида табы слово запятая новаялиния

Скажите пожалуйста, как это распарсить с помощью парсека и получить список слов

Mikhail
26.06.2018
07:27:32
Разделить по запятой, убрать табы?

Alex
26.06.2018
07:27:35
Листаю доку, но не могу понять как добавить слово

Mikhail
26.06.2018
07:27:52
Зачем там парсек

Alex
26.06.2018
07:28:17
Это только подзадача

Alexander
26.06.2018
07:31:23
тут нужно ответить "что такое слово"

например если что угодно, где нету пробела то слово это word = takeWhile (not . isSpace)

kir
26.06.2018
07:32:52
Лучше break

Google
Dmitry
26.06.2018
07:32:56
Джентельмены, помогите: у меня есть строки вида табы слово запятая новаялиния
парсер sepBy - распарсить по табам. но наверняка потребуется поддерживать строковые литералы в кавычках и квотации

Alex
26.06.2018
07:33:27
например если что угодно, где нету пробела то слово это word = takeWhile (not . isSpace)
Да, это подходит но очень хочется попрактивоться именно с parsec

Dmitry
26.06.2018
07:33:29
что приведет нас к полноценному парсингу строковых литералов и как следствие к полноценнум парсеру csv, которых уже есть пара штук

Alexander
26.06.2018
07:33:30
тогда разбор будет: word `sepBy1` tab <* comma <* endOfLine

вот я тоже боюсь что там tsv или csv

Dmitry
26.06.2018
07:34:01
это всегда так

без исключений.

Alex
26.06.2018
07:34:34
Да, оно похоже, но на самом деле там C++ енум

Dmitry
26.06.2018
07:34:45
парсер строковых литералов я таскаю из проекта в проект, периодически теряю и пишу заново

Alexander
26.06.2018
07:34:52
в общем я комбинаторы в документации каждый раз смотрю, но в целом структура будет как в коде выше

Dmitry
26.06.2018
07:35:33
может, на хакадже есть?

Alex
26.06.2018
07:35:59
А что значит <* ?

Dmitry
26.06.2018
07:37:02


Alex
26.06.2018
07:37:27
Спасибо

Alexander
26.06.2018
07:37:41
из сообщения выше

Ilya
26.06.2018
07:38:19
из сообщения выше
непонятно, в сообщении выше не парсек же

Alexander
26.06.2018
07:38:20
это к автору вопрос на самом деле, что такое слово

парсек, у него есть эти комбинатоы

Google
Ilya
26.06.2018
07:38:47
тогда уж надо many letter или как там

Alexander
26.06.2018
07:38:50
ну атоопарсек

не знаю, many неПробел - вполне разумно

а что там надо, нам не сказали

Ilya
26.06.2018
07:40:12
я к тому, что не похоже, что это скомпилируется:) но может ошибаюсь

например если что угодно, где нету пробела то слово это word = takeWhile (not . isSpace)

Admin
ERROR: S client not available

Ilya
26.06.2018
07:40:20
тогда разбор будет: word `sepBy1` tab <* comma <* endOfLine

Alexander
26.06.2018
07:41:15
я же написал, что +- имена комбинаторов

Ilya
26.06.2018
07:41:22
ок понял

значит это не тот word

Alexander
26.06.2018
07:41:38
что я их помнить что-ли буду, если хаддок есть

это не из data.list

Ilya
26.06.2018
07:45:14
парсер C++ пишешь?

Alex
26.06.2018
07:45:44
Да, мне нужно транслировать много старого кода в новый

Ilya
26.06.2018
07:46:30
и какая добрая душа тебе посоветовала для этого Parsec? ?

Alex
26.06.2018
07:46:46
Первое что нагуглил

А есть либы проще?

Aleksey
26.06.2018
07:47:19
Тут можно вообще обойтись "без либ"

Google
Aleksey
26.06.2018
07:47:27
words + отбросить запятые

Alexander
26.06.2018
07:47:37
megaparsec / attoparsec

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

Alex
26.06.2018
07:48:09
Тут можно вообще обойтись "без либ"
Это только подзадача, там много всего

Ilya
26.06.2018
07:48:27
да готовое что-нибудь надо брать

сейчас бы руками C++ код парсить

Слава
26.06.2018
07:49:20
Парсил с++, случайно написал компилятор

Yuriy
26.06.2018
08:16:48
так ведь распарсить С++ без половины компилятора невозможно

IC
26.06.2018
08:19:41
можно поофтопить? когда там следующий FProg SPb?

Maxim
26.06.2018
08:20:03
вроде как в июне не будет, а в июле будет на ITGM

я там спрашивал

Alex
26.06.2018
08:28:09
Нашел гайд по мегапарсеку

http://akashagrawal.me/beginners-guide-to-megaparsec/

Я так понимаю, он уже устарел?

Ибо у меня вообще не компилится

Код оттуда

Ой

Не то

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